LINUX.ORG.RU

История изменений

Исправление Vic, (текущая версия) :

Наблюдаемый эффект, когда печатается только «B», идет не от языка, а от оптимизатора, встроенного в конкретный компилятор. Если вы поменяете в своем примере ключ -Ofast на -O0 (плюс надо скорректировать вычисляемый адрес), тогда выведется как положено, A и B.

https://gcc.godbolt.org/z/6fsG857xa

PS. К сожалению, многие путают оптимизацию и свойства языка. В языке, адреса это обычные числа (номер байта в адресном пространстве процессора), а контроль типов осуществляется только по типу переменной, хранящей адрес (т.е. по типу переменной указателя). Все остальное - вольности оптимизаторов. В вашем случае, с применением -Ofast оптимизатор просто вырезал из бинарного кода сравнение и печать «A».

Исправление Vic, :

Наблюдаемый эффект, когда печатается только «B», идет не от языка, а от оптимизатора, встроенного в конкретный компилятор. Если вы поменяете в своем примере ключ -Ofast на -O0 (плюс надо скорректировать вычисляемый адрес), тогда выведется как положено, A и B.

https://gcc.godbolt.org/z/6fsG857xa

PS. К сожалению, многие путают оптимизацию и свойства языка. В языке, адреса это обычные числа (номер байта в адресном пространстве процессора), а контроль типов осуществляется только по типу переменной, хранящей адрес (т.е. по типу переменной указателя). Все остальное - вольности оптимизаторов.

Исправление Vic, :

Наблюдаемый эффект, когда печатается только «B», идет не от языка, а от оптимизатора, встроенного в конкретный компилятор. Если вы поменяете в своем примере ключ -Ofast на -O0 (плюс надо скорректировать вычисляемый адрес), тогда выведется как положено, A и B.

https://gcc.godbolt.org/z/6fsG857xa

PS. К сожалению, многие путают оптимизацию и свойства языка. В языке, адреса это обычные числа (номер байта в адресном пространстве процессора), а контроль типов осуществляется только по типу переменной, хранящей адрес (т.е. по типу переменной указателя).

Исправление Vic, :

Наблюдаемый эффект, когда печатается только «B», идет не от языка, а от оптимизатора, встроенного в конкретный компилятор. Если вы поменяете в своем примере ключ -Ofast на -O0 (плюс надо скорректировать вычисляемый адрес), тогда выведется как положено, A и B.

https://gcc.godbolt.org/z/6fsG857xa

PS. К сожалению, многие путают оптимизацию и свойства языка. В языке, адреса это обычные числа, а контроль типов осуществляется только по типу переменной, хранящей адрес (т.е. по типу переменной указателя).

Исправление Vic, :

Наблюдаемый эффект, когда печатается только «B», идет не от языка, а от оптимизатора, встроенного в конкретный компилятор. Если вы поменяете в своем примере ключ -Ofast на -O0 (плюс надо скорректировать вычисляемый адрес), тогда выведется как положено, A и B.

https://gcc.godbolt.org/z/6fsG857xa

PS. К сожалению, многие путают оптимизацию и свойства языка.

Исправление Vic, :

Наблюдаемый эффект, когда печатается только «B», идет не от языка, а от оптимизатора, встроенного в конкретный компилятор. Если вы поменяете в своем примере ключ -Ofast на -O0, тогда выведется как положено, A и B.

https://gcc.godbolt.org/z/6fsG857xa

PS. К сожалению, многие путают оптимизацию и свойства языка.

Исходная версия Vic, :

Наблюдаемый эффект, когда печатается только «B», идет не от языка, а от оптимизатора, встроенного в конкретный компилятор. Если вы поменяете в своем примере ключ -Ofast на -O0, тогда выведется как положено, A и B.

https://gcc.godbolt.org/z/6fsG857xa

PS. Многие путают оптимизацию и свойства языка.