int readNum() {
int n;
cin >> n;
return n; // 有返回值
}
int main() {
int n = 0;
while (readNum()) { // 調用但未接收返回值!
cout << n; // n 永遠是 0
}
}
readNum() 讀取輸入並返回數值,但 main 中 while (readNum()) 僅判斷返回值是否為 0,**未將返回值賦給 n**。導致 n 始終保持初始值 0。
// 方案一:在循環條件中接收
int n;
while ((n = readNum()) != 0) { // 或 while (n = readNum())
cout << n;
}
// 方案二:引用參數傳出
void readNum(int &out) { cin >> out; }
int main() {
int n;
while (true) {
readNum(n);
if (n == 0) break;
cout << n;
}
}
// 方案三:返回 optional (C++17)
std::optional readNum() {
int n;
if (cin >> n) return n;
return std::nullopt;
}
-Wunused-result)。bool 表示成功/失敗,數值通過引用/指針輸出,避免 0 值語義衝突。