无限循环?

时间:2011-03-16 21:35:05

标签: c++ while-loop infinite-loop

我在这个论坛中遇到过这个问题

#include <iostream>

using namespace std;

int main(int argc, char** argv) {

    int x=0;
    while (x<3) {
        x = x++;
        cout << x << endl;
    }

    return 0;
}

根据上面的代码,为什么while循环无限?在mac os下使用gcc 4.4,while循环确实终止:)所以这个问题并不适用于所有架构。我变得艰难的输出是 1
2
3

我没有看到0,我猜原因与双重任务有关?

2 个答案:

答案 0 :(得分:14)

x = x++;

是未定义的行为

答案 1 :(得分:0)

你永远不会看到零,因为增量在cout之前。