可能重复:
未定义的行为和序列点
我无法理解以下宏:
#define CUBE(x) ((x)*(x)*(x))
我的代码:
int y=5;
print("Cube = %d",CUBE(++y));
这段代码打印 512(使用 Microsoft Visual Studio)
我期待这个打印出来:((++5)*(++6)*(++7)) = (6*7*8) = 336
。
这是如何评估的?
同样的代码也使用 Dev C++ 编译器编译,结果是 392!!!
有人可以解释为什么两个编译器对完全相同的代码显示不同的结果吗?
这是如何++y
评估的?