c++ - 意外的输出

标签 c++ visual-c++ c++11 undefined-behavior

#include <iostream>

int main() 
{

    const int i=10;
    int *p =(int *) &i;
    *p = 5;
    cout<<&i<<" "<<p<<"\n";
    cout<<i<<" "<<*p;
    return 0;
}

输出:

0x22ff44 0x22ff44

10 5

请解释。

最佳答案

好吧,您的代码显然包含未定义的行为,所以任何事情都有可能发生。

在这种情况下,我相信会发生这样的事情:

在 C++ 中,const int 被认为是编译时常量。在您的示例中,编译器基本上将您的“i”替换为数字 10。

关于c++ - 意外的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5324685/

相关文章:

c++ - C/C++ 中的动态位 vector

c++ - 为什么在下面的C++程序中2147453647*2147453647的乘积显示为1,-2147453648*-2147453648的乘积显示为0?

c++ - 如何检测和断言特定类的虚拟继承?

c++ - 如何在 Visual Studio 中更改 C++ 标准库实现

c++ - std::find 中的 Lambda 问题

c++ - 为什么我不能在下面的代码中访问 A 类函数?

c++ - 捕获单元测试库链接错误

C++ delete 不释放所有内存 (Windows)

c++ - STL std::remove_if 编译器失败

c++ - 标准输入C++