我有理解下面的宏麻煩:
#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