char *ch2="abc";printf("strlen(ch2)=%d",strlen(ch2)); ---编译警告:warning #2181-D: argument is incompatible withcorresponding format string conversionprintf("strlen(ch2)=%d",strlen(ch2));^后来,我定义一个变量int a;a=strlen(ch2);printf("strlen(ch2)=%d", a); 这样就没有警告了。
3 回答
aluckdog
TA贡献1847条经验 获得超7个赞
函数中,当传入参数的类型不符合的时候,如果不能自动转化,会给出错误信息;能转化则给出警告信息。strlen返回的是unsigned int类型的,和%d不符合,但可以转化。
后来没有了转为中间使用是int转换了, printf函数类型符合
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
#include<stdio.h>
#include<string.h>
int main()
{
char *ch2="abc";
printf("strlen(ch2)=%d",strlen(ch2));
system("pause");
}
我这样子可以啊 你用的是什么版本的编译器
holdtom
TA贡献1805条经验 获得超10个赞
strlen函数的返回值是个 unsigned int ,而%d是int格式输出,所以会有警告,用%u格式就不会有警告了:
printf("strlen(ch2)=%u",strlen(ch2));
- 3 回答
- 0 关注
- 128 浏览
添加回答
举报
0/150
提交
取消