[const]Différence comportement C/C++
Quelqu'un arrive-t-il à expliquer le comportement ce code un fois compilé (avec g++) puis exécuter:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
int main()
{
const int a = 2;
int * pa;
const int * cpa;
cpa = &a;
pa = (int*)cpa; //Pour gruger le mot clé const
*pa = 4;
printf("a = %d\n", a);
printf("*pa = %d\n", *pa);
return 0;
} |
On a alors la sortie suivante :
a = 2
*pa = 4
Pourquoi n'a-t-on pas :
a = 4
*pa = 4
pa est censé pointé le contenu de a ?
c'est d'ailleurs le résultat obtenu avec gcc...