-> const <-
int const c1=4; // 作为立即数存在
int const c2[1]={2}; // 存储在内存地址中,通过地址访问
*(int *)&c1=5; // 不能改变立即数的值,立即数是直接的数字
*(int *)&c2[0]=9; // 这行代码进行了强制赋值
cout<<c1+c2[0]<<endl; // cout<<
4+c2[0]<<endl;
4 + 9 = 13 // C++ 中居然是这个结果
// C 因该是 14 或 6
//------------------------------------------------------------------------------
优化后“c2[1]={2};”也作为立即数,因为这个只有1个元素,把c[0]直接当成数字2,并且是使用const声明的,所以编译器认为它是不会被改变的。不过这是经过优化的。
-
-
[此贴子已经被作者于2007-11-18 22:08:37编辑过]