C 为什么要打印两个指针的减法结果?
我试图减去2个指针,这样它们就给出了元素的数量。我可以编译程序并运行它。但是编译后它会抛出错误 守则: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
#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;
}