Проблема в том, что вы солгали своему компилятору, и компиляторы довольно хорошо отомстили людям, которые им * ie.
В частности, в этой строке вы сказали компилятору, что MAX_AGE
изменяемый:
b = (int*)&MAX_AGE;
Это все ie, потому что вы объявили MAX_AGE
как const
. То, что происходит дальше, называется неопределенным поведением (UB) : компилятор может выдавать любые результаты, включая полную чушь, после того, как ваш код запускает UB.
В вашем случае, однако, есть довольно хорошее объяснение того, что печатается: зная, что MAX_AGE
- это другое имя для 90
, компилятор оптимизировал std::cout << MAX_AGE << std::endl;
для печати 90
, не ища его значение из памяти.