首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言 for 迴圈條件中呼叫 puts 導致無限迴圈

     編輯:程式設計疑難解答

代碼:

for(i=0; i<5, puts("**"); i++);

現象:無限列印 **。

原因

  • 逗號運算子:expr1, expr2 依序執行,**整個表達式值為最後一項(puts("**") 的回傳值)**。
  • puts 成功回傳非負整數(通常是列印字元數),在 C 語言中視為 true。
  • 迴圈條件判斷:i<5 為 false 後,仍評估 puts("**") 為 true → 迴圈持續。

修正

將列印移入迴圈主體:

for(i=0; i<5; i++) {
    puts("**");
}

或用 while 明確控制:

i=0;
while(i<5 && puts("**")>=0) i++;

教訓

  • 迴圈條件僅放**純邏輯判斷**,勿夾帶副作用函式(I/O、修改狀態)。
  • 逗號運算子在條件判斷中極易誤用,能不用就不用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved