const int用const_cast转换后的有关问题
const int用const_cast转换后的问题
编译器在编译时遇到const_int,是不是优先将其看作枚举类,直接将它替换为对应的整型常量,不考虑其存储单元的值?
而将int换为float,执行上述相同操作后,const_float也会随之改变。是不是存储方式的不同导致的?
------解决方案--------------------
const_int确实是在编译时被数字替换了,至于float,不懂
------解决方案--------------------
测试了,改成float确实如LZ所说
也觉得与存储方式有关
------解决方案--------------------
- C/C++ code
const int const_int=123; int& test_const_cast=const_cast<int&>(const_int); cout<<test_const_cast<<endl;//输出为123 test_const_cast=3; //004016F9 mov eax,dword ptr [ebp-1Ch] //004016FC mov dword ptr [eax],3 ;的确改变了存储单元的值 int a=const_int; //00401702 mov dword ptr [ebp-20h],7Bh;直接将7BH传给a cout<<"a\t"<<a<<endl;//123 cout<<"const_int\t"<<const_int<<endl;//123 cout<<"test_const_cast\t"<<test_const_cast<<endl;//3
编译器在编译时遇到const_int,是不是优先将其看作枚举类,直接将它替换为对应的整型常量,不考虑其存储单元的值?
而将int换为float,执行上述相同操作后,const_float也会随之改变。是不是存储方式的不同导致的?
------解决方案--------------------
const_int确实是在编译时被数字替换了,至于float,不懂
------解决方案--------------------
测试了,改成float确实如LZ所说
也觉得与存储方式有关
------解决方案--------------------
- C/C++ code
test_const_cast=3;