c++编译器常量优化

2018-12-14  本文已影响0人  spyder_men
int main()
{
    int const a = 10;
    int const * p = &a;
    int *q =const_cast<int *> (p);
    *q = 20;
    cout << *q << "\n" << *p << "\n" << a<<endl;
    system("pause");
}

结果

image.png
分析:变量a为啥是10?
因为编译器在编译时会对常量做优化,并不是真的到内存中去取值
解决办法:
加关键字volatile
int volatile const  a = 10;
上一篇 下一篇

猜你喜欢

热点阅读