【发布时间】:2021-05-12 08:57:43
【问题描述】:
我是一名尝试学习 C 和 C++ 的学生,我的说明符有问题 %d 我不明白控制台中写的异常,它正在写
The format %d expects argument of type 'int', but argument 2 has type 'long long unsigned int' [-Wformat]
代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
short int u=1;
int v=2;
long int w=3;
char x='x';
float y=4;
double z=5;
long double a=6;
long b=7;
printf("short int:%d\n",sizeof(u));
printf("int:%d octets\n",sizeof(v));
printf("long int:%d octets\n",sizeof(w));
printf("char:%d octets\n",sizeof(x));
printf("float:%d octets\n",sizeof(y));
printf("double:%d octets\n",sizeof(z));
printf("long double:%d octets\n",sizeof(a));
printf("long:%d octets\n",sizeof(b));
return 0;
}
【问题讨论】:
-
sizeof的结果是size_t类型,在您的系统上相当于 Long Long Unsigned。您应该使用%zu而不是%d,它适用于size_t类型的参数。
标签: c printf sizeof size-t conversion-specifier