Basically, yes. It may give wrong result, because in this line B is both written and read, and it is unspecified what will happen first.
Most probably you have tried it many times but you have used the same compiler, right? In such case it's very unlikely for you to observe different results. For a given the same bit of code, compilers usually produce a stable the same result.
To see a difference, you may need to change the compiler, or at least change some options like more or less aggressive optimization.
The problem with this expression is that, theoretically, it may be compiled as:
assign b <- a
a = a + b - a // but now, B is already equal a
or
assign temp1 <- a
assign temp2 <- b
assign b <- a
a = temp1 + temp2 - a // here values are preserved