Re[2]: a = a++; каков результат?
От: leo_jan Армения  
Дата: 29.04.09 18:44
Оценка: -5
Здравствуйте, Fwiffo, Вы писали:

F>Здравствуйте, ajanov, Вы писали:


A>>Все доброго сремени суток!


A>>Сегодня у новичка увидел в коде:



A>>
A>>a = a++;
A>>



A>>Так вот вопрос: какой должен быть результат? По правилам C++ значение a не должно измениться, однако все популярные компиляторы (MSVC, GCC) увеличивают значение на 1, а IAR выдает предуждение "undefined behavior".


F>Это что за правила такие?

F>Переменная модифицируется два раза между точками следования, так что результат может быть какой угодно.
F>Undefined behavior и есть.

Это правило последовательности выполнения операторов, а последовательность такова:
1) создается временный объект которому приписывается значение 'a'
2) значение а увеличивается на 1
3) а приписывается приписывается значение временного объекта — то есть начальное значение 'а'

Друго дело что писать a = a++; — дурной тон
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.