linxu下C语言编程关于strlen输出的问题
#include <stdio.h>
#include <string.h>
void main()
{
char c[]=“abc”;
printf("%d",strlen©);
}
我第一次这样输出是会报编译错误:
test1.c:54:3: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘size_t’ [-Wformat=]
#include <stdio.h>
#include <string.h>
void main()
{
char c[]=“abc”;
int a;
a=strlen©;
printf("%d",a);
}
第二次修改后错误消失,因为中间手动进行了int类型的转换
#include <stdio.h>
#include <string.h>
void main()
{
char c[]=“abc”;
printf("%ld",strlen©);
}
第三次我改了printf中输出的类型为ld
查阅相关资料后了解了可能是strlen返回值的问题,strlen返回值与printf不匹配,与不同的编译器也相关