只是想知道文字字符串是左值还是右值。其他文字(如int,float,char等)是左值还是右值?
函数的返回值是左值还是左值?
你怎么区别?
答案 0 :(得分:40)
C标准认可原始术语代表左和右,如同L = R
;但是,它会将左值视为定位器值,这大致意味着您可以获取对象的地址,因此该对象具有位置。 (见C99中的6.3.2.1。)
出于同样的原因,标准已经放弃了术语rvalue,只使用“表达式的值”,这实际上是一切,包括文字,如整数,字符,浮点数等。此外,你可以做的任何事情使用右值也可以使用左值,因此您可以将所有左值都视为右值。
答案 1 :(得分:4)
C中有两种表达式: 1.左值:作为左值的表达式可以显示为赋值的左侧或右侧。 2. rvalue:作为rvalue的表达式可能出现在赋值的右侧但不是左侧。 变量是左值,因此可能出现在赋值的左侧。数字文字是右值,因此可能无法分配,也不能出现在左侧。以下是有效的声明: int g = 20; 但是follow不是一个有效的语句,会产生编译时错误: 10 = 20;
答案 2 :(得分:1)
来自Microsoft的C ++有一个definition。根据这个定义, 一个文字字符串,比如说“你好世界”,是左值,因为它是常量而不是暂时的。实际上它会持续整个应用程序的生命周期。