错误评估视觉工作室的增量和减量exp

时间:2013-11-01 18:40:54

标签: c++

#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

出了什么问题!

1 个答案:

答案 0 :(得分:3)

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

这是未定义的行为。

您无法在单个序列中访问单个变量,无法多次读取和写入该变量。

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