这段代码是如何打印5的?

How does this code section print 5?

本文关键字:打印 何打印 段代码 代码      更新时间:2023-10-16
#include <iostream>
using namespace std;
int main() {
    cout<<(int *)16 -  (int *)10 ;
return 0;
}

这段代码产生一个输出5,我不能理解输出?

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

实际上,由于两个地址之间的差异[可能]不是sizeof(int)的倍数,您的编译器似乎在退缩并返回卑鄙的废话。

幸运的是,您从来没有理由在您的项目中编写此代码,因此这无关紧要。