Como uma variável no mesmo endereço está produzindo 2 valores diferentes? [duplicado

Esta pergunta já tem uma resposta aqui:

ois valores diferentes no mesmo endereço de memóri respostas

Considere isto

#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;
}

A saída para isso é:

40 65 
0xbfacbe8c 0xbfacbe8c

Isso quase parece impossível para mim, a menos que o compilador esteja fazendo otimizações. Como

,

questionAnswers(4)

yourAnswerToTheQuestion