3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
函數(shù)中,當(dāng)傳入?yún)?shù)的類型不符合的時(shí)候,如果不能自動(dòng)轉(zhuǎn)化,會(huì)給出錯(cuò)誤信息;能轉(zhuǎn)化則給出警告信息。strlen返回的是unsigned int類型的,和%d不符合,但可以轉(zhuǎn)化。
后來(lái)沒有了轉(zhuǎn)為中間使用是int轉(zhuǎn)換了, printf函數(shù)類型符合

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
#include<stdio.h>
#include<string.h>
int main()
{
char *ch2="abc";
printf("strlen(ch2)=%d",strlen(ch2));
system("pause");
}
我這樣子可以啊 你用的是什么版本的編譯器

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
strlen函數(shù)的返回值是個(gè) unsigned int ,而%d是int格式輸出,所以會(huì)有警告,用%u格式就不會(huì)有警告了:
printf("strlen(ch2)=%u",strlen(ch2));
- 3 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)