int a = 20;
if (1 <= a <= 10) // 程序員以為判斷 a 在 1~10 之間
printf("in range\n");
else
printf("out of range\n");
in range
C 語言不支持數學意義的鏈式比較。表達式 1 <= a <= 10 按運算符結合性(左結合)解析為:
(1 <= a) <= 10
→ (1 <= 20) 為 1 (真)
→ 1 <= 10 為 1 (真)
→ 整個條件成立
if (1 <= a && a <= 10) // 邏輯與連接兩個獨立比較
printf("in range\n");
a == b == c 同理錯誤,應為 a==b && b==c;