Показать сообщение отдельно
Старый 11.06.2010, 06:54   #29   
FSM follower
 
Аватар для su -o
 
Сообщений: 797
Регистрация: 25.06.2007
Возраст: 47

su -o вне форума Не в сети
в мемориз
Цитата:
Сообщение от Spectator Посмотреть сообщение
Вопрос на самом деле упирается вот во что (и почему он возник):
При компиляции программы переменные сохраняются либо в регистрах процессора, либо в памяти. В одном и том же компиляторе при разных настройках (или даже при изменении кода рядом с проверяемой строчкой) значение переменной может перейти из регистра в память, и получится другое значение.
Мораль сей басни такова - не надо писать такой код, я уже обжигался и не раз. Почему - потому что стандартам сегодня строго никто не следует, это несовместимо с понятием оптимизирующего компилятора.
И, если уж и проверять такие фокусы в конкретных компиляторах, нужно ПОЛНОСТЬЮ отключать оптимизацию.
"Мудрецам" от программирования для понимания вышеперечисленного рекомендую изучить хотя бы поверхностно ассемблер, выбрать любой компилятор и посмотреть - как меняется исполняемый код в зависимости от настроек оптимизатора, ужаснуться и запомнить что так писать - НИЗЯ!))))
отсыпь чуть, а?
  Ответить с цитированием