я так понимаю, что если есть volatile переменная x, то варнинг вызовет даже выражение x * x. дело в том, что volatile означает для компилятора то, что значение переменной может быть изменено неизвестным ему способом в любой момент и поэтому надо на самом деле считывать значение из ячейки памяти всякий раз, когда она встречается в выражении. и вот обнаруживается, что в выражении х*х первый икс может оказаться не равным второму! и компилятор честно предупреждает программиста: парень, ты вообще в курсе, что может получиться из написанного тобой?
в случае, когда разные volatile-переменные используются в одном выражении или передаются в одну функцию, ситуация аналогична, т.е. потенциально неизвестно, какое значение будет на самом деле использовано.
--------------------
Я бы взял частями... но мне надо сразу.
|