История изменений
Исправление 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. Многие путают оптимизацию и свойства языка.