左值可以出现在赋值的左侧,换句话说就是"可以分配的东西"
因此,寻找左手边不可"分配"的分配,例如,这样简单的事情可能会触发这样的错误
if (0 = foo)
{
}
Run Code Online (Sandbox Code Playgroud)
在这里你试图分配一个常量因为意外使用=而不是==
也可以看看
这意味着实现需要一个对象,但您只是传递了一个值或函数.对于传递非左值的赋值或应用于非函数的操作地址,会发生这种情况.
左值代表"位置值",表示一个表达式,该表达式引用声明为register或存储位置的对象.类似的东西42是既不符合标准的值.更正式地说,有三类
printf是一个功能指示符,但&printf不是,同时又*&printf是.var + 0(产生与对象不再关联的值)或枚举的枚举器.&printf属于这一类.