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 關注
- 179 瀏覽
添加回答
舉報
0/150
提交
取消