错误信息“Lvalue required required”究竟是什么意思?需要左值
需要左值
回答
左值是“可分配的东西”
所以,寻找一个任务分配时,左手边是不是“分配”的东西,可以在赋值语句的左侧出现,换言之,例如,这样简单的东西可能会引发这样的错误
if (0 = foo)
{
}
在这里你有一个试图向一个常数,因为不小心使用=,而不是==
也
见这意味着实现预期的目标,但你只是传递一个值或功能。这发生在您通过非左值的分配或应用于非函数的操作地址上。
左值代表“位置值”,并且表示引用声明为register
或存储位置的对象的表达式。类似42
的值与两个条件都不匹配。更正式地有三个类别
- 左值:参考对象。这包括声明为const的对象。这些是不可修改的左值。
- 函数指示符:指函数。
printf
是一个函数指示符,但&printf
不是,而*&printf
又是。 - 其他:有时称为“右值”,由标准描述为“表达的价值”。示例为
var + 0
(产生与对象无关的值)或枚举的枚举器。&printf
属于这一类。
如果你编码somrthing像function(parameter) = value;
,因为你不能给任何不是可能的容器的值分配值的错误cometh。
C99标准状态(6.3.2.1):
的lvalue
是与对象类型或大于空隙以外的不完全类型的表达式;如果lvalue
在评估时未指定对象,则行为未定义。当一个对象被称为具有特定类型时,类型由用于指定对象的lvalue
指定。可修改的lvalue
是lvalue
,它没有数组类型,没有不完整的类型,没有const限定的类型,并且如果它是结构体或联合体,没有任何成员(包括递归地,任何成员或所有包含聚合或联合的元素)与const限定类型。
名称lvalue
从赋值表达式E1 = E2
,其中左操作数E1
需要是一个(修改)lvalue
来原本。它可能更好地被认为代表一个对象“定位器值”。有时称为rvalue
的是在此国际标准中描述为“表达的价值”。
换句话说,一个lvalue
的东西,你可以找到用于潜在地改变。一个可修改的lvalue
是一个实际上允许更改。
例如,将C语句:
x = 7;
是有效的,因为x
是lvalue
。在另一方面,声明:
14 = 7;
是无效的,因为14
是不东西,你可以找到一个分配。
的片段:
const int x = 7;
实际上创建了一个名为lvalue
x
即使你不允许改变它(它不是一个修改`左值)。
nit picking,但从技术上讲,这也可以是用'register'声明的变量,所以它可能没有地址。 – 2010-10-09 09:22:28
“如果一个左值没有指定一个对象,当它被评估时,行为是undefined._”,除非行为是_not_ undefined:'&*(int *)0;'(sic) – curiousguy 2011-12-25 18:18:42
这很可能意味着您尝试将值分配给无法分配的内容。例如,以下两种情况都可能导致该错误:
5 = 5; myObject-> myMethod()= 5;
- 1. 错误:需要左值
- 2. 需要左侧
- 3. 错误:需要作为左操作数赋值的左值
- 4. 错误:“需要作为左操作数赋值的左值”
- 5. 左值需要错误与宏
- 6. 左值需要作为分配
- 7. 左值要求
- 8. “需要作为分配的左操作数[错误]左值”
- 9. UIImageView需要左上角UITextView
- 10. “在奇数位置需要作为赋值左操作数的左值” - C++
- 11. “在C中需要作为赋值左操作数的左值”在C
- 12. 我收到一个错误:左值需要作为左操作数的赋值
- 13. 为什么我需要左值作为赋值的左操作数?
- 14. 关于左值到右值的转换,当需要它?
- 15. “需要左值作为转让的左操作数”错误 - 三元操作
- 16. C编程;左值要求
- 17. '+ =':左边的指针;需要积分值右边
- 18. 显示需要累积的多个值的左连接
- 19. 错误:运算符重载++时需要左值++ - -
- 20. mysql左连接,但需要从第三个表的值
- 21. 作为一元'&'操作数需要的错误左值
- 22. 作为赋值左操作数所需的左值
- 23. 作为赋值左操作数所需的左值(C程序)
- 24. ImageView - 左右不需要的填充
- 25. UIpagecontrol需要动画Rigth到左边
- 26. 需要替代两个左连接
- 27. 左加入像需要像LIMIT
- 28. 左连接多列不需要重复
- 29. 左侧边栏需要双方
- 30. SQL:需要在日期列移到空值权利,而不是空值向左
可能重复[“需要l值”错误](http://stackoverflow.com/questions/1353384/l-value-required-error) – 2010-10-09 09:05:24
@Paul这是关于C++,虽然。 – 2010-10-09 09:08:47