閱讀this這個話題後,我還是有點困惑。以下C++表達式*d++ = ~(*d);
是否定義良好?是的,我知道這樣的複合表達是醜陋的..我沒有寫它。這是明確的代碼?
我看到生成的程序略有不同,當我把它比作:
*d = ~(*d);
d++;
大會:
*d++ = ~(*d);
0x83384 LDR R3,[R0 <d>,4] <<diff
0x83388 ADD R1 <c>, R1 <c>, 1
0x8338c MVN R3, R3
0x83390 STR R3,[R0 <d>],4
VS
*d = ~(*d);
d++;
0x83384 LDR R3,[R0 <d>]
0x83388 ADD R1 <c>, R1 <c>, 1
0x8338c MVN R3, R3
0x83390 STR R3,[R0 <d>],4
謝謝!
所有彙編是要告訴你的是什麼這個特殊的編譯器的這個特定版本與您使用這個特定時刻的設置一樣。它沒有說什麼是標準保證或不保證的。 – 2011-05-16 22:25:09
謝謝。我最初認爲在這個問題的背景下看看編譯器產生了什麼可能會有所幫助。我現在看到任何東西(在未定義的情況下)都可能產生。 – Mav3rick 2011-05-16 22:42:09