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;
}

So I am working on a book, and I understand how these things work, but I am seeking a more concrete explanation of why this prints 6 and 8. Please help me.

Thanks

4

5 回答 5

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
于 2013-11-22T01:12:50.370 回答
1

j从 5 开始。然后递增到 6,然后与 in 中的 9 进行比较++j < 9。这通过了条件,所以我们转到下一行,它输出 6,然后递增j到 7。我们回到条件,j递增到 8,仍然小于 9,然后输出,然后j递增到9,条件失败并且程序结束的地方。

于 2013-11-22T01:11:55.587 回答
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循环退出,不再打印。

于 2013-11-22T01:12:48.833 回答
0

++j 表示 j 的值加 1 ,然后在出现的表达式中使用

j++ 表示在表达式中使用 j 的(当前)值,之后j 递增

于 2013-11-22T01:12:26.177 回答
0

++j 表示将 j 加一,然后对 j 求值。另一方面,j++ 意味着先评估 j,然后将其增加 1。

于 2013-11-22T01:29:00.160 回答