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

C 語言三元運算符左值錯誤:條件運算符結果非左值,無法直接賦值

     編輯:程式設計綜合問答

錯誤代碼

d > 0 ? (c += 1) : (d ? a += 1 : b += 1); // 編譯錯誤:lvalue required

原因解析

C 語言條件運算符 ?: 的結果是右值(臨時值),不能作為賦值目標(左值)。雖然 c+=1 本身是左值表達式,但整個 ?: 表達式的類型與值類別導致無法編譯。

正確寫法

if (d > 0) {
    c += 1;
} else if (d) {
    a += 1;
} else {
    b += 1;
}
// 或使用逗號運算符(僅執行副作用,不取值)
d > 0 ? (c += 1, 0) : (d ? (a += 1, 0) : (b += 1, 0));

C++ 差異

C++ 中條件運算符若二三操作數均為同類型左值,結果為左值,上述代碼在 C++ 編譯器下可能通過,但 C 標準嚴格禁止。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved