代碼片段:
if (a % 7 == 0) {
printf("%d", a);
flag == 1; // 錯誤:這是判斷,不是賦值
break;
}
導致 flag 永遠為 0,循環不會因 break 退出?實際上 break 在 if 內部會執行,但 flag == 1 無副作用,後續判斷 if (flag == 1) 失效。
if (a % 7 == 0) {
printf("%d", a);
flag = 1; // 單等號賦值
break;
}
== 比較,= 賦值。-Wall -Wextra),GCC/Clang 會提示 statement with no effect。if (0 == a % 7),誤寫成 = 會直接編譯報錯。細節決定成敗,養成良好編碼習慣。