`
seasar
  • 浏览: 21391 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C和C++里面的lvalue 和 rvalue的释义

阅读更多

C和C++里面的lvalue 和 rvalue的释义

在看GCC的文档的时候,看到一个词lvalue,查了金山词霸其释义为 lvalue [计] 左值。因为的确在介绍编译原理的课程中听过这个词,大致知道其意思就没有多想。但是看完GCC文档的这个篇幅,都无法明白全篇在说什么。问题还是出在了lvalue这个词的“左值”是什么意思的理解上了。再找M-W字典,却告知没有这个词。于是google了一把,的确很多地方都称其为左值,我仍然不得要领。最后在一个百科网站About Site上找到该词的准确释义,摘贴如下:
Definition: C and C++ have the notion of lvalues and rvalues associated with variables and constants. The rvalue is the data value of the variable, that is, what information it contains. The "r" in rvalue can be thought of as "read" value. A variable also has an associated lvalue. The "l" in lvalue can be though of as location, meaning that a variable has a location that data or information can be put into. This is contrasted with a constant. A constant has some data value, that is an rvalue. But, it cannot be written to. It does not have an lvalue.

Another view of these terms is that objects with an rvalue, namely a variable or a constant can appear on the right hand side of a statement. They have some data value that can be manipulated. Only objects with an lvalue, such as variable, can appear on the left hand side of a statement. An object must be addressable to store a value.

Here are two examples.

int x;

x = 5; // This is fine, 5 is an rvalue, x can be an lvalue.
5 = x; // This is illegal. A literal constant such as 5 is not
      // addressable. It cannot be a lvalue.

这段就说的很明白 lvalue中的l其实指的表示该值的存储地址属性,而另外一个相对的词rvalue值中的r指得是read的属性,和左右根本没有任何关系。
分享到:
评论

相关推荐

    C++11最新使用手册

    - **4.1 Lvalue-to-rvalue conversion 左值到右值转换**:介绍了如何将左值转换为右值。 - **4.2 Array-to-pointer conversion 数组到指针转换**:说明了数组如何转换为指针。 - **4.3 Function-to-pointer ...

    c++17 标准文档

    - **C++内存模型 (C++ Memory Model)**:解释了C++如何处理内存访问和同步,特别是在多线程环境中。 - **C++对象模型 (C++ Object Model)**:定义了C++中对象的基本属性和行为,以及它们是如何存储和访问的。 - **...

    C++2011新标准

    - **C++对象模型**:详细解释了C++中的对象是如何在内存中表示和管理的,涉及布局、类型和大小的计算。 #### 程序执行与多线程执行 - **程序执行**:阐述了程序的执行流程,包括入口点、异常处理机制以及程序终止...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

     李文娟,中国石油大学(华东)硕士,现供职于国家行政学院,工作后一直从事软件开发和软件项目管理工作,对计算机语言、计算机体系结构、操作系统都非常熟悉,尤其是精通C和C++编程技术. 目录 封面 -19 封底 -18 扉页...

    C++11标准Document

    1. **Lvalue-to-rvalue conversion**:介绍了一种转换类型。 2. **Array-to-pointer conversion**:描述了数组到指针的转换。 3. **Function-to-pointer conversion**:说明了函数到指针的转换。 4. **Qualification...

    C++ 11的英文标准文档

    - **4.1 左值到右值的转换 (Lvalue-to-rvalue conversion)**:将左值转换为右值。 - **4.2 数组到指针的转换 (Array-to-pointer conversion)**:将数组转换为指向其第一个元素的指针。 - **4.3 函数到指针的转换 ...

    ISO IEC 14882 2011 C++ 2011

    - **4.1 Lvalue-to-rvalue conversion**:描述了左值到右值的转换过程。 - **4.2 Array-to-pointer conversion**:解释了数组到指针的转换规则。 - **4.3 Function-to-pointer conversion**:说明了函数到函数指针的...

    C++ Standard - ANSI ISO IEC 14882 2011

    - **运算符和标点符号 (Operators and punctuators)**:解释了C++中的各种运算符和标点符号的作用。 - **文字量 (Literals)**:介绍了C++中的文字量及其使用方式。 3. **基本概念 (Basic concepts)** - **声明和...

    C++11最新ISO标准

    - **左值转右值转换**(Lvalue-to-rvalue conversion) - **数组转指针转换**(Array-to-pointer conversion) - **函数转指针转换**(Function-to-pointer conversion) - **限定转换**(Qualification conversions...

    C++ 标准 ISO 14882-2011

    - C++和ISO C(C++ and ISO C)、C++和ISO C++ 2003(C++ and ISO C++ 2003)、C标准库(C standard library)讨论了C++与其他标准和版本之间的兼容性问题。 附录D. 兼容性特性(Compatibility features) - 增量...

    C++11标准最新标准

    - **Lvalue-to-rvalue conversion**(左值到右值转换):介绍了一种特殊的转换方式。 - **Array-to-pointer conversion**(数组到指针转换):说明了如何将数组转换为指针。 - **Function-to-pointer conversion**...

    C++资源——课件及其入门等---一本书

    例如,乘法和除法是左结合的,意味着`a / b / c`会被解释为`(a / b) / c`。 优先级和结合性是理解复杂表达式的关键,例如,`a = b + c * d`中,乘法先于加法执行,因为乘法的优先级高于加法,所以`b + c * d`会先...

    C++0x 标准草案

    - **4.1 Lvalue-to-rvalue conversion**:左值到右值的转换。 - **4.2 Array-to-pointer conversion**:数组到指针的转换。 - **4.3 Function-to-pointer conversion**:函数到指针的转换。 - **4.4 Qualification ...

    C++ 程序员编程标准

    #### 4.1 左值到右值转换(Lvalue-to-rvalue conversion) - **定义**:将左值转换为右值。 - **内容**:例如将一个变量转换为其值。 - **作用**:使得左值可以在需要右值的上下文中使用。 #### 4.2 数组到指针转换...

    C++11引用临时变量的解析

    现在,让我们深入了解一下C++中的左值(lvalue)、右值(rvalue)和它们的衍生概念:xvalue和prvalue。 左值(lvalue)是指可以出现在赋值操作符左边的表达式,通常代表一个具有持久性的实体,比如变量。例如,`*E`...

    自考c++知识点总结.doc

    在C++编程语言中,有一些核心概念和技术是自学考试中必不可少的知识点。下面是对这些知识点的详细解释: 1. **动态内存分配与释放**:在C++中,使用`new`关键字可以动态地为对象或对象数组分配内存。例如,`int *...

    C++专有名词定义

    本文将对C++中113个专有名词进行详细的定义解释,适合初学者阅读,旨在帮助那些对C++专有名词定义不熟悉的学习者快速理解和掌握。 #### 二、重要名词详解 1. **变量(Variable)**:存储数据值的基本单位,每个...

    C++98/11/17表达式类别(小结)

    在 `auto_decl` 命名空间中,`auto` 用于声明不同类型的引用,如 `non_reference()`、`lvalue_reference()` 和 `rvalue_reference()`。 了解并正确使用这些表达式类别对于编写高效、安全的C++代码至关重要。特别是...

Global site tag (gtag.js) - Google Analytics