if (k % i)
; // 空語句
else
break;
if (k % i) 等價於 if (k % i != 0)。
% 是取模(餘數)運算子。| 條件結果 | 含義 | 執行分支 |
|---|---|---|
k % i != 0(k 不能被 i 整除) | 表達式值為非零 → 真 | 執行 if 後的空語句 ;,繼續往下 |
k % i == 0(k 能被 i 整除) | 表達式值為 0 → 假 | 執行 else break;,跳出迴圈 |
此模式常用於質數判斷、因數分解、篩選倍數等迴圈中:
for (int i = 2; i <= sqrt(k); i++) {
if (k % i) // k 不能被 i 整除
continue; // 繼續下一輪
else
break; // 找到因數,非質數,跳出
}
if (k % i == 0) 然後把邏輯反過來,雖然功能相同,但原碼意圖是「不整除才繼續」。if (k % i); 後面的分號代表空語句,實際不執行任何操作,單純為了語法完整性。if (k % i == 0) { ... } else { ... },可讀性更高。if (k % i) 就是「若 k 不能被 i 整除」的簡潔寫法。掌握「非零即真」的 C 語言布爾判斷規則,是閱讀與編寫高效 C 代碼的基礎。