getchar()使用時(shí)遇到的數(shù)據(jù)類(lèi)型錯(cuò)誤
在字母讀取操作中通常會(huì)使用到這條語(yǔ)句
while ((c = getchar() ) != EOF)
在做練習(xí)時(shí),沒(méi)有注意括號(hào)的重要性,寫(xiě)成
while (c = getchar() != EOF)
結(jié)果使得putchar(c)是亂碼。
分析:
返回的bool值雖然也是1沒(méi)錯(cuò),但是c取得的值卻是亂碼。鑒于語(yǔ)句里面只有兩個(gè)判斷符號(hào)
猜測(cè)是符號(hào)優(yōu)先級(jí)導(dǎo)致了亂碼?
推測(cè)c被賦予的值是int 1。但是作為char輸出時(shí),是亂碼。不應(yīng)該當(dāng)會(huì)當(dāng)作ACSII碼來(lái)處理嗎?
if ((c == ) || (c == t) )
if (flag == 0)
{
}
2.
char
char s[] = {1,4};
char 數(shù)組不能那樣存?
但是使用 c = getchar(); 之后,即是c存的是數(shù)字,但是也是char類(lèi)型。
可以有 s [i] = c; ,同時(shí)輸出也是正確值(鍵盤(pán)輸入123,s元素也是123);
執(zhí)行時(shí)產(chǎn)生了Segmentation fault (core dumped)錯(cuò)誤,由于數(shù)組操作為主,初定是數(shù)組越界導(dǎo)致。
沒(méi)錯(cuò)就是數(shù)組越界造成的!對(duì)于數(shù)組s[10],實(shí)際范圍是s[0]~s[9]!千萬(wàn)別往s[10]里面存東西,我就存了#!#!#!#!還好只是存了結(jié)束符