代碼如下
#include<stdio.h>
int main() {
int c;
while ((c = getchar()!=EOF)) {
putchar(c);
}
return 0;
}
運行結果為什么是這樣,
是代碼哪里錯了嗎?
uj5u.com熱心網友回復:
#include<stdio.h>int main() {
int c; ====》》 改成 char c;
while ((c = getchar()!=EOF)) ====》》改成 while ((c=getchar()) != EOF)
{
putchar(c);
}
return 0;
}
uj5u.com熱心網友回復:
while ((c = getchar()!=EOF))因為這句話
getchar() != EOF 在你沒有Ctrl+Z之前輸入的字符都不是EOF,所以判斷結果始終是1
c = 1
putchar(1)
你看看1的ascii對應的是什么就知道了
改正
while ((c = getchar()) !=EOF )
uj5u.com熱心網友回復:
等號的優先級最低,所以是先計算右邊的,在賦值給cuj5u.com熱心網友回復:
賦值=的優先級低于!=,因此getchar() != EOF先執行,然后把1的結果賦值c,所以每次輸出的putchar(1);即亂碼了。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/115960.html
標籤:C語言
上一篇:萌新求問關于函式宣告
下一篇:C++讀取檔案時的路徑問題
