为什么要打印两个指针减去警告的结果?
Why trying to print the result of subtraction of two pointers throwing warning?
我正在尝试减去 2 个指针,这样它们就可以给出 elements.I 可以编译程序和 运行 的数量。但是编译后它会抛出错误
pointerarithmetic.c: In function ‘main’:
pointerarithmetic.c:9:8: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=]
printf("%d",(q-p));
代码:
#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;
}
预期的输出应该是元素的数量。
指针相减 return 类型 ptrdiff_t
(在 stddef.h
中定义),而不是 int。
使用%td
打印结果。
我正在尝试减去 2 个指针,这样它们就可以给出 elements.I 可以编译程序和 运行 的数量。但是编译后它会抛出错误
pointerarithmetic.c: In function ‘main’: pointerarithmetic.c:9:8: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=] printf("%d",(q-p));
代码:
#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;
}
预期的输出应该是元素的数量。
指针相减 return 类型 ptrdiff_t
(在 stddef.h
中定义),而不是 int。
使用%td
打印结果。