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

C語言合法表達式判斷:賦值、取模、復合賦值優先級與結合性考點解析

     編輯:C 語言問答

題目選項分析

選項代碼合法性解析
Aa += 7✅ 合法復合賦值,等價 a = a + 7,右結合,a 為左值
Bb + c = a = 7❌ 非法b+c 為右值 (暫時值),不可作左值賦值目標
Cint 18.5 % 3❌ 非法% 要求**整數運算元**,18.5 為浮點常量;且 int 為關鍵字不可作標識符
Da = a + 7 = c + b❌ 非法a+7 為右值,不可賦值;鏈式賦值右結合但每個 = 左側必須為左值

核心規則總結

  1. 左值 (Lvalue):表達式標識對象,**可取地址**、可出現在賦值左側 (變量、解引用指釖、陣列元素)。
  2. 右值 (Rvalue):臨時值、字面常量、算術表達式結果,**不可賦值**。
  3. 賦值運算符 =`:右結合,要求左側為左值,返回左值 (C 語言特有,C++ 返回左值引用)。
  4. 復合賦值 +=` 等:同樣要求左側為左值,僅求值一次左側表達式。
  5. 取模 %:**雙邊運算元必為整數類型** (含 char/short/int/long),浮點數用 fmod。

類似考點練習


// 下列何者合法?
1. x = y = z = 10;        // ✅ 合法,右結合,z=10 返回 z 左值,依次賦值
2. (a > b) ? a : b = 20;  // ❌ 非法,三元優先級高於 =,解析為 (a>b?a:b)=20,結果為右值
3. (a > b) ? a : (b = 20); // ✅ 合法,括號強制 b=20 為三元第三操作數
4. *p++ = 5;              // ✅ 合法,*p++ 解析為 *(p++),返回左值
5. 3 + 4 = 7;             // ❌ 非法,3+4 為右值
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved