文字字符串和函数返回值是左值还是右值?

  • 只是想知道一个文字串是一个左值还是右值。 其他文字(如int,float,char等)是左值还是右值?

  • 函数的返回值是左值还是右值?

  • 你如何分辨这些差异?


  • 字符串文字是左值,但是你不能改变它们
  • rvalue,但是如果它是一个指针而非NULL,它指向的对象是一个左值
  • C标准认识到原始术语代表左侧和右侧,如L = R ; 然而,它认为将左值看作定位符值,这大致意味着您可以获取对象的地址,因此该对象具有位置。 (见C99中的6.3.2.1)

    同样的道理,标准已经放弃了术语右值,并且只是使用“表达式的值”,这几乎是所有的东西,包括诸如整数,字符,浮点数等文字。此外,任何你可以用右值也可以用左值来完成,所以你可以把所有的左值视为右值。


    C中有两种表达式:1.左值:左值的表达式可以显示为赋值的左侧或右侧。 2.右值:作为右值的表达式可以出现在赋值的右侧,但不是左侧。 变量是左值,因此可能出现在任务的左侧。 数字文字是右值,因此可能不会被分配,并且不能出现在左侧。 以下是一个有效的语句:int g = 20; 但以下不是一个有效的语句,并会产生编译时错误:10 = 20;


    有一个来自Microsoft的C ++定义。 通过这个定义,一个文字字符串,例如“hello world”,是左值,因为它是常量而不是临时值。 实际上,它贯穿于应用程序的整个生命周期。

    链接地址: http://www.djcxy.com/p/40281.html

    上一篇: Are literal strings and function return values lvalues or rvalues?

    下一篇: Does my source code shows my own understanding of structures in c++?