11.06.2010, 06:54
|
#29
|
|
FSM follower
Сообщений: 797
Регистрация: 25.06.2007
Возраст: 47
Не в сети
|
в мемориз
Цитата:
Сообщение от Spectator
Вопрос на самом деле упирается вот во что (и почему он возник):
При компиляции программы переменные сохраняются либо в регистрах процессора, либо в памяти. В одном и том же компиляторе при разных настройках (или даже при изменении кода рядом с проверяемой строчкой) значение переменной может перейти из регистра в память, и получится другое значение.
Мораль сей басни такова - не надо писать такой код, я уже обжигался и не раз. Почему - потому что стандартам сегодня строго никто не следует, это несовместимо с понятием оптимизирующего компилятора.
И, если уж и проверять такие фокусы в конкретных компиляторах, нужно ПОЛНОСТЬЮ отключать оптимизацию.
"Мудрецам" от программирования для понимания вышеперечисленного рекомендую изучить хотя бы поверхностно ассемблер, выбрать любой компилятор и посмотреть - как меняется исполняемый код в зависимости от настроек оптимизатора, ужаснуться и запомнить что так писать - НИЗЯ!))))
|
отсыпь чуть, а?
|
|
|