0
我的目標C.目標C中++運算符的不同行爲?
int a = 3; a = (a++) * (a++); NSLog(@"a= %d",a);
返回編譯的程序輸出: A = 11
而在C#中的輸出爲12
任何人都可以解釋我的行爲的差異目標C中的++運算符?
我的目標C.目標C中++運算符的不同行爲?
int a = 3; a = (a++) * (a++); NSLog(@"a= %d",a);
返回編譯的程序輸出: A = 11
而在C#中的輸出爲12
任何人都可以解釋我的行爲的差異目標C中的++運算符?
運營商++
沒有區別。問題是你正在調用未定義的行爲。具體而言,您正在讀取並更新相同序列點中的a
變量兩次,這在ANSI C規範中明確未定義。您從該表達式得到的值可能因編譯器不同而不同,甚至可能在相同編譯器版本之間有所不同,甚至在開啓單獨優化的同一編譯器版本的調用之間也會有所不同。
非常感謝。 – Aditi
@Aditi:至少[惡魔沒有飛出你的鼻子](http://catb.org/jargon/html/N/nasal-demons.html)! –