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