合法不合理:程式碼符合語法規則,編譯器不報錯 (或僅警告),但**邏輯與開發者意圖不符**,導致運行結果錯誤。
if (a = 0) { // ❌ 合法:賦值表達式值為 0 (false),但永遠不進入分支
// do something
}
if (a == 0) 判斷 a 是否為 0。if 條件永不成立。int b, c;
scanf("%d", &c); // 假設輸入 c
b = c < 28; // 關係運算:c<28 為真則 b=1,偽則 b=0
printf("%d", b); // 輸出 0 或 1
此代碼**語法合法、邏輯合理** (若意圖為判斷大小關係),屬於正常關係運算用法,非「不合理」。
for (; i < n; i++); 結尾分號導致迴圈體為空。if (x = getValue()) 意圖判斷返回值非 0,實為賦值。double avg = sum / count; (sum、count 皆為 int)。