这段代码如何打印5?

时间:2015-10-24 18:04:15

标签: c++

#include <iostream>
using namespace std;

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

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

1 个答案:

答案 0 :(得分:5)

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

实际上,由于两个地址之间的差异[可能]不是sizeof(int)的倍数,因此您的编译器似乎正在喋喋不休并返回一些废话。

幸运的是,你没有理由在你的项目中编写这段代码,所以没关系。