首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言 if 語句經典陷阱:鏈式比較 1 <= a <= 10 的錯誤語義

     編輯:關於C語言

C語言 if 語句經典陷阱:鏈式比較 1 <= a <= 10 的錯誤語義

數學寫法 1 ≤ a ≤ 10 在 C 中**不成立**,會被解析為 (1 <= a) <= 10。

錯誤代碼

int a = 20;
if (1 <= a <= 10)  // 1<=20 為真(1),1<=10 為真 → 進入分支!
    printf("in range\n");
else
    printf("out of range\n");

輸出:in range (明顯錯誤,20 不在 1~10 內)。

正確寫法

if (1 <= a && a <= 10)  // 邏輯與連接兩個獨立比較
    printf("in range\n");

原理解析

  • C 無鏈式比較語法,<= 左結合。
  • 1 <= a 產生 int 結果 (0 或 1)。
  • 該結果再與 10 比較,1 <= 10 恆真。

其他語言對比

  • Python、Rust、Kotlin 支援鏈式比較:1 <= a <= 10 正確語義。
  • C/C++/Java/C# 需顯式 && 連接。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved