我有這個簡單的代碼(試圖做KandR練習): -的printf VS的putchar - 不同的輸出
#include <stdio.h>
int main(){
int c = EOF;
while(c=(getchar() != EOF)){
printf("%d",c);
}
return 0;
}
當我運行這一點,並輸入任何字符(單個字符),我得到的輸出作爲11.如果我輸入多個字符爲例如'bbb'我得到的輸出爲1111.我明白,我已明確添加括號給予getchar()!= EOF應該導致1或0的條件檢查的優先權但我不明白爲什麼我會得到多個1。
另一種情況是:
#include <stdio.h>
int main(){
int c = EOF;
while(c=(getchar() != EOF)){
putchar(c);
}
return 0;
}
無論我輸入的字符,我總是得到的輸出作爲一個方框與在它的1和0的
(在下面的屏幕截圖的底部示出)1)在第一種情況下,爲什麼輸出打印超過1 1?
2)爲什麼情況2的輸出與情況1相同?
你是while while循環是錯誤的。嘗試'while((c = getchar())!= EOF)' – WhozCraig
對於putchar打印'1',你必須發送Ascii值爲1(49十進制)而不是整數1。價值與人品問題。 – Jiminion
您對第二個輸出的描述有誤導性。代碼的兩種變體通常會產生絕對相同的行格式,即在第二個例子中不會有任何特殊的「盒子」。唯一的區別是第一個例子使用'1'作爲輸出字符,而第二個例子使用'\ x1'作爲輸出字符。 – AnT