我有理解下面的宏麻烦:
#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
这个怎么评估的?
未定义行为...不要那样做。 – jn1kk