首页 > 解决方案 > 需要解释输出

问题描述

#include <stdio.h>
    int main(){
    int a[4]={1,2,3,4};
    int b[4]={1,2,3,4};
    int n =&b[3]-&a[2];
    printf("%d\n", n);
}

请任何人解释为什么输出显示 5

标签: cc++14

解决方案


这只是未定义的行为

不相关的对象之间没有定义指针算术。

您观察到的是,在您的实现中,数组ab是连续布局的,这解释了差异 5。但这绝不是保证行为,并且指针算术本身是未定义的。


推荐阅读