Я все еще немного растерялся после прочтения этой темы. Хорошо ли определено следующее выражение 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
против
*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
Спасибо!