gpt4 book ai didi

C++ - 使用地址解释转换 const

转载 作者:行者123 更新时间:2023-11-30 00:53:29 27 4
gpt4 key购买 nike

我用 c++ 编写了以下代码。
我想转换为 const 变量并更改它,这是代码:

#include <iostream>
using namespace std;
int main()
{
int const a = 5;
int* ptr = (int*)&a;
*ptr = 10;
cout<<"a is : "<< a << endl;

system("pause");
}

这段代码通过了编译器,我希望程序打印屏幕 10 ,
但屏幕上的结果是 5。
当我运行调试器时,&a 中的内存已按预期更改为 10。
知道为什么吗?

最佳答案

首先,这是未定义的行为。不要这样做。其次,编译器优化了实际查看 &a 处的内存。当你打印出 a因为你告诉编译器 a永远不会改变(你说它是 const )。所以它实际上变成了...

cout << "a is : "<<5 << endl;

关于C++ - 使用地址解释转换 const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16193816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com