while ((ch = getchar()) != '\n') { ... }
運算符優先級:!= (關係運算符) > = (賦值運算符)。
ch = getchar() != '\n' → 先判斷 getchar() != '\n' (結果 0 或 1),再賦值給 ch,導致 ch 變為布爾值而非字符。(ch = getchar()) != '\n' → 先執行賦值,ch 得到字符,再比較是否為換行符。ch = getchar();
while (ch != '\n') {
// ...
ch = getchar();
}