需要左值

alf*_*ani 10 c lvalue

"Lvalue required"的错误信息实际上是什么意思?

Pau*_*xon 8

左值可以出现在赋值的左侧,换句话说就是"可以分配的东西"

因此,寻找左手边不可"分配"的分配,例如,这样简单的事情可能会触发这样的错误

if (0 = foo)
{

}
Run Code Online (Sandbox Code Playgroud)

在这里你试图分配一个常量因为意外使用=而不是==

也可以看看


Joh*_*itb 6

这意味着实现需要一个对象,但您只是传递了一个值或函数.对于传递非左值的赋值或应用于非函数的操作地址,会发生这种情况.

左值代表"位置值",表示一个表达式,该表达式引用声明为register或存储位置的对象.类似的东西42是既不符合标准的值.更正式地说,有三类

  • 左值:参考物体.这包括声明为const的对象.这是不可修改的左值.
  • 功能代号:参考功能.printf是一个功能指示符,但&printf不是,同时又*&printf是.
  • 其他:有时称为"rvalue",并被标准描述为"表达的价值".示例是var + 0(产生与对象不再关联的值)或枚举的枚举器.&printf属于这一类.