В принципе, да. Это может привести к неправильному результату, потому что в этой строке B написано и прочитано, и неуказано, что произойдет первым.
Скорее всего, вы пробовали это много раз, но вы использовали тот же самый компилятор, не так ли? В таком случае вам вряд ли удастся увидеть разные результаты. Для данного же кода кода компиляторы обычно создают стабильный результат.
Чтобы увидеть разницу, вам может потребоваться изменить компилятор или, по крайней мере, изменить некоторые параметры, такие как более или менее агрессивная оптимизация.
Проблема с этим выражением является то, что, теоретически, он может быть собран как:
assign b <- a
a = a + b - a // but now, B is already equal a
или
assign temp1 <- a
assign temp2 <- b
assign b <- a
a = temp1 + temp2 - a // here values are preserved
Почему бы просто не поставить его на другую линию? Это облегчает чтение для программистов. Например. Я даже не знаю, чего ожидать в результате. – Caramiriel
Это ужасное кодирование. Зачем вам это делать? –
Это действительно плохой стиль кодирования. :-(* edit * другие были быстрее :) – HelloWorld