c++ - 这段代码如何打印5?

标签 c++

#include <iostream>
using namespace std;

int main() {
    cout<<(int *)16 -  (int *)10 ;
return 0;
}

此代码部分产生输出 5,我无法理解输出?

最佳答案

对此进行合理化是没有意义的:您没有一个数组包含内存中位于 1016 的元素。因此,减法运算是未定义的,任何事情都可能发生。

实际上,由于两个地址之间的差异[可能]不是sizeof(int)的倍数,因此您的编译器似乎在畏缩并返回无意义的内容。

幸运的是,您永远没有理由在项目中编写此代码,因此这并不重要。

关于c++ - 这段代码如何打印5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33321559/

相关文章:

c++ - 使用 boost 示例时出现错误 C4996

c++ - 使用静态成员初始化静态映射

c++ - HCURSOR 从另一个窗口,可能吗?

c++ - 在 windows 和 mac 上运行的 Opengl cpp 代码?

c++ - 使用 qt 浏览、列出和删除文件

c++ - 如何处理 Boost.Spirit 生成的警告?

C++ 遍历 wstring 的每个字符并替换它

c++ - 从 cin 推回成对的 vector 给出错误的结果

c++ - Ubuntu 14.04 中 Qt4 对 `QAbstractVideoSurface::QAbstractVideoSurface(QObject*)' 的 undefined reference

c++ - 构造函数中冒号后的变量