简单的c ++循环前缀后缀运算符

时间:2013-11-22 01:08:03

标签: c++ loops post-increment pre-increment

#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.请帮助我。

由于

5 个答案:

答案 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;

为什么只打印68

进入循环后,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。