Как переменная с тем же адресом выдает 2 разных значения? [Дубликат]

На этот вопрос уже есть ответ:

Два разных значения при одном и том же адресе памяти 6 ответов

Учти это

#include <iostream>
using namespace std;

int main(void)
{
    const int a1 = 40;
    const int* b1 = &a1;
    char* c1 = (char *)(b1);
    *c1 = 'A';
    int *t = (int*)c1;


    cout << a1 << " " << *t << endl;
    cout << &a1 << " " << t << endl; 

    return 0;
}

Выход для этого:

40 65 
0xbfacbe8c 0xbfacbe8c

Это кажется мне почти невозможным, если компилятор не выполняет оптимизацию. Как

,

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

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