#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.请帮助我。
由于
答案 0 :(得分: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
答案 1 :(得分:1)
j
从5开始。然后增加到6,然后与++j < 9
中的9 in进行比较。这传递了条件,所以我们转到下一行,输出6然后将j
递增到7.我们回到条件,j
递增到8,这仍然小于9,然后输出,然后j
递增到9
,其中条件失败并且程序结束。
答案 2 :(得分:1)
鉴于:
int j = 5;
while ( ++j < 9)
cout << j++ << endl;
为什么只打印6
和8
?
进入循环后,j
为5.然后while (++j ...
将其增加到6.然后cout
执行,打印出6.然后{{1的副作用发生,将其增加到7。
在循环的下一次迭代中,j++
再次递增它,给出++j
,然后将其打印出来。然后发生8
的副作用,将j++
增加到9。
然后再次执行j
时,while (++j < 9)
已增加到10,因此j
循环退出,不再打印。
答案 3 :(得分:0)
++ j表示j的值增加1 ,然后在表达式中使用
j ++表示j的(当前)值在表达式中使用,之后 j递增
答案 4 :(得分:0)
++ j表示将j增加1,然后计算j。 另一方面,j ++意味着首先评估j,然后将其增加1。