阅读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