Получение одного и того же значения переменной const даже после его изменения с помощью const_cast

Рассмотрим приведенный ниже фрагмент кода:

int main()
{
    const int i=3;
    int *ptr;

    ptr=const_cast<int*>(&i);
    *ptr=5;

    cout<<"i= "<<i<<endl;  <------------------- statement 1
    cout<<"*ptr= "<<*ptr<<endl;  <------------- statement 2

    return 0;
}

Я получаю вывод как:

i= 3
*ptr= 5

http://ideone.com/Bvme6

Почему ценностьi не меняется через указатель?

Я знаю, что отбрасывание константности переменной, которая явно объявлена как const, и изменение ее значения - это «неопределенное поведение». Мне любопытно узнать: это какой-нибудь механизм оптимизации компилятора, который "компилятор заменяет переменную в программе значением"? Это означает, что оператор 1 интерпретируется компилятором как:

cout<<"i= "<<3<<endl;

Даже если заявление

ptr=const_cast<int*>(&i);    

заменяется

 ptr=(int*)(&i);

Я получаю тот же вывод:http://ideone.com/5lzJA

Ответы на вопрос(5)

Ваш ответ на вопрос