[問題] 修改 const int x = 100;
之前再思考有關 bitwise const 以及 logical const 的問題
我就隨手寫了一個更改 const int 的程式
==============================
#include <iostream>
using namespace std;
int main()
{
const int x = 100;
int* py = const_cast<int*>(&x);
*py = 9;
cout << "(addr,value) of x ==> " << "(" << hex << &x << "," << dec << x <<
")" << endl;
cout << "(addr,value) of *py ==> " << "(" << hex << py << "," << dec << *py
<< ")" << endl;
return 0;
}
===============================
原本以為會印出來如下: (addr,value) of x ==> (xxx,9) // xxx 代表某 address
(addr,value) of *py ==> (xxx,9)
結果卻出乎我意料之外:
(addr,value) of x ==> (xxx,100) // xxx 代表某 address
(addr,value) of *py ==> (xxx,9)
同一個位置上的值卻不一樣 = = (我對 const 的認知好像又被顛覆了 = =)
我在 VS 2008 和 gcc 3.4.5 version 上跑都是一樣的結果。
4239篇 dotwsc 大大有類似的問題 (但他用的 compiler 可以改動到 const 的值)
是不是 C++ 的標準規格又多了甚麼限制嗎? 還是甚麼原因
請教各位 謝謝 @@")
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.216.170.154
推
04/29 10:28, , 1F
04/29 10:28, 1F
→
04/29 10:29, , 2F
04/29 10:29, 2F
→
04/29 10:31, , 3F
04/29 10:31, 3F
→
04/29 10:31, , 4F
04/29 10:31, 4F
→
04/29 10:32, , 5F
04/29 10:32, 5F
→
04/29 10:32, , 6F
04/29 10:32, 6F
→
04/29 10:48, , 7F
04/29 10:48, 7F
→
04/29 10:51, , 8F
04/29 10:51, 8F
推
04/29 17:19, , 9F
04/29 17:19, 9F
→
04/29 17:19, , 10F
04/29 17:19, 10F
→
04/29 17:20, , 11F
04/29 17:20, 11F
→
04/29 17:21, , 12F
04/29 17:21, 12F
推
04/29 18:41, , 13F
04/29 18:41, 13F
→
04/29 18:42, , 14F
04/29 18:42, 14F
→
04/29 18:42, , 15F
04/29 18:42, 15F
推
04/29 22:03, , 16F
04/29 22:03, 16F
→
04/29 22:03, , 17F
04/29 22:03, 17F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):