【发布时间】:2012-05-29 03:32:14
【问题描述】:
我有以下代码:
const int x = 5;
int *p = (int*)&x;
*p = 2; // Line 1
cout << x << " - " << *p << endl;
cout << &x << " - " << p << endl;
并得到了结果:
5 - 2
0012FF28 - 0012FF28
我知道代码很奇怪,不应该这样做。但我想知道为什么相同的地址却得到不同的结果? Line 1 存储数字 2 的位置在哪里?
【问题讨论】:
-
请您的编译器生成汇编列表并找出答案。可能会发生什么情况,您的编译器是否认为
x是const(正确如此),因此将值内联编译到您的第一个cout语句中。