2013-11-22 51 views
1
#include "stdafx.h" 
#include <iostream> 
using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int j = 5; 
    while (++j < 9) 
     cout << j++ << endl; 
    cin.get(); 
    return 0; 
} 

所以我工作的一本书,我知道这些东西是如何工作的,但我求为什么这个打印6和8。请帮我一个更具体的说明。简单的C++循环前缀后缀运算

由于

+0

预增量和后增量...不太复杂。 –

回答

1

考虑:

int j = 5; 
while (++j < 9) 
    cout << j++ << endl; 

为什么只有68印?

在进入循环,j是5。然后while (++j ...增量,为6。然后将cout执行时,打印出6.然后j++的副作用发生,它递增至7

在在循环的下一次迭代中,++j再次递增,给出8,然后打印出来。然后j++的副作用发生,递增j至9

然后,当再次执行while (++j < 9)j已递增到10,所以while循环退出时,并没有更多的被打印。

1

j开始作为5.然后被递增到6,然后在++j < 9与9相比较。这是通过条件,所以我们去下一行,它输出6,然后将j增加到7.我们回到条件,j增加到8,这仍然小于9,然后输出,然后j是递增到9,条件失败并且程序结束。

0

++Ĵ指j的值由1 然后在显得

J ++表达式中使用递增指(当前)j的值在表达式中使用,后该 j增加

2

要明白它的输出,你需要单步执行代码:

j = 5 
j = j + 1 // 6 
j < 9 ? yes 
output j // 6 
j = j + 1 // 7 
go to start of loop 
j = j + 1 // 8 
j < 9 ? yes 
output j // 8 
j = j + 1 // 9 
go to start of loop 
j = j + 1 // 10 
j < 10 ? no 
0

++ j通过一个手段j增加,然后评估学家 另一方面,j ++表示先评估j,然后再将其增加1.