簡體   English   中英

錯誤:左值需要作為增量操作數

[英]error: lvalue required as increment operand

我嘗試了以下代碼:

int a = ++2;

我知道無法修改常量,但我無法理解編譯器輸出的錯誤:

*  error: lvalue required as increment operand 

究竟是什么意思?

當一個表達式在內存中指定一個可修改的位置時,它被認為是一個“左值”。 修改值的運算符要求其操作數是左值。

賦值運算符要求左側是左值。 這就是這個行話的起源。 后綴和前綴遞增/遞減運算符對其單個操作數也有此要求。

一個左值表達式可能不僅僅是一個變量名,還可能是一個更復雜的表達式,例如:

*(p + 2); // the unary * operator produces an lvalue
*(p + 2) = 5; // so that this is possible
(*(p + 2))++; // or this

它的確切意思是

  1. ++根據定義是遞增運算符遞增的運算符)
  2. 它操作的東西叫做增量操作數
  3. 這個東西需要是一個左值(相當於一個指針的東西)
  4. 在這種情況下2增量運算符,它不是左值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM