-3
#include <iostream>
using namespace std;

int main() {

    int x = 10;
    int y = 11;
    int z = 12;

    cout << x++ + --x + y++ - y-- + z;

    return 0;
}

这里的输出是 31

http://ideone.com/tp58av

输出使用 Visual Studio 2005 是 30

怎么了 !

4

1 回答 1

3
cout << x++ + --x + y++ - y-- + z;

这是未定义的行为。

您不能在单个序列中访问单个变量来多次读取和写入它。

与所有未定义的行为一样,它可能会按您的预期工作,可能会重新格式化您的硬盘,可能会为我点披萨……或者可能会启动整个星球的自毁序列。一切都是可以接受的行为,因为您尝试做的事情是未定义的。

于 2013-11-01T18:45:18.597 回答