C 为什么要打印两个指针的减法结果?

C 为什么要打印两个指针的减法结果?,c,pointers,subtraction,C,Pointers,Subtraction,我试图减去2个指针,这样它们就给出了元素的数量。我可以编译程序并运行它。但是编译后它会抛出错误 守则: #include<stdio.h> int main(){ int a[5]={0,10,20,30,40}; int *p,*q; p=&a[0]; q=&a[2]; printf("%d",*p); printf("%d",*q); printf("%d",(q-p)); return 0

我试图减去2个指针,这样它们就给出了元素的数量。我可以编译程序并运行它。但是编译后它会抛出错误

守则:

#include<stdio.h>

    int main(){
    int a[5]={0,10,20,30,40};
    int *p,*q;
    p=&a[0];
    q=&a[2];
    printf("%d",*p);
    printf("%d",*q);
    printf("%d",(q-p));
    return 0;
    }

预期的输出应该是元素数。

指针减法返回stddef.h中定义的ptrdiff类型,而不是int


使用%td打印结果。

指针减法返回stddef.h中定义的类型ptrdiff,而不是int


使用%td打印结果。

嘿,我还原了你的编辑,因为它的格式不好。好的,我还原了你的编辑,因为它的格式不好。好的,我还原了你的编辑
#include<stdio.h>

    int main(){
    int a[5]={0,10,20,30,40};
    int *p,*q;
    p=&a[0];
    q=&a[2];
    printf("%d",*p);
    printf("%d",*q);
    printf("%d",(q-p));
    return 0;
    }