区别

一个左值表达式的求值结果是一个对象或一个函数,当一个对象被用作左值时,使用的是对象的身份(在内存中的位置)。

一个右值表达式的求值结果是一个字面值或临时对象,当一个对象被用作右值时,使用的是对象的值(内容)。

原则

在需要右值的地方可以用左值来代替,但需要左值的地方不能用右值来代替,并且,当用左值来代替右值时,实际上使用的是左值的内容(它所存储的值)。如:

int i=10;
int *p=&i;
int a=*p;   // *解引用符返回的是一个左值,但是这里作为右值使用,其实是使用它所指向的值,即i的值

常用的运算符

左值:= (返回的是左侧的运算对象) 、* (包括内置解引用和迭代器解引用) 、 [ ] (包括数组、string以及vector) 、 ++i 、 --i 。

右值:& (取地址运算符,返回的是对象的指针,这个指针是一个右值运算符) 、 i++ 、 i-- ...

[C++] 左值和右值相关推荐

  1. C++/C++11中左值、左值引用、右值、右值引用的使用

    C++的表达式要不然是右值(rvalue),要不然就是左值(lvalue).这两个名词是从C语言继承过来的,原本是为了帮助记忆:左值可以位于赋值语句的左侧,右值则不能. 在C++语言中,二者的区别就没 ...

  2. C/C++左值性精髓(二)哪些表达式是左值,哪些是右值?----右值表达式

    2019独角兽企业重金招聘Python工程师标准>>> C对于右值的定义是表达式的值,C中所有完整表达式的结果都是右值.所谓完整表达式(full expression),指的是这样的 ...

  3. 【 C 】对左值与右值的一些个人思考

    今天重温C语言的指针,看的书是<C和指针>,关于左值和右值以及指针表达式的内容看得甚是迷惑与煎熬,怎么会这么难理解,指针表达式又是作为左值又一会作为右值,而且二者有着不一样的含义,为什么当 ...

  4. c/c++左值和右值

    C/C++中的变量有左值和右值之分,他们的区别主要如下: (1)左值可以放在赋值号 = 的左右两边,右值只能放在赋值号 = 的右边 (2)在C语言中,有名字的变量即为左值:而函数的运行结果或表达式中间 ...

  5. 《C++语言入门经典》一2.8 左值与右值

    2.8 左值与右值 C++中的每个语句.表达式的结果分为左值与右值两类.左值指的是内存中持续存储的数 据,而右值是指临时存储的结果. 在程序中,声明过的独立变量如: Int k; short p; c ...

  6. 39.左值、左值引用、右值、右值引用

    1.左值和右值的概念 左值是可以放在赋值号左边可以被赋值的值:左值必须要在内存中有实体:          右值当在赋值号右边取出值赋给其他变量的值:右值可以在内存也可以在CPU寄存器.       ...

  7. 2020-10-27(左值和右值)

    什么是表达式: 表达式由一个或多个操作数通过操作符组合而成.最简单的表达式仅包含一个字面值常量.较复杂的表达式则由操作符以及一个或者多个操作数构成. 一个变量是表达式但是一个表达式就不一定是变量了. ...

  8. c++中的左值与右值

    转载自 http://www.cnblogs.com/catch/p/3500678.html 左值 (lvalue)和右值 (rvalue) 是 c/c++ 中一个比较晦涩基础的概念,有的人可能甚至 ...

  9. c语言 变量的左值和右值,C++雾中风景10:聊聊左值,纯右值与将亡值

    C++11的版本在类型系统上下了很大的功夫,添加了诸如auto,decltype,move等新的关键词来简化代码的编写与降低阅读代码的难度.为了更好的理解这些新的语义,笔者确定通过几篇文章来简单窥探一 ...

  10. 左值、右值、左值引用、右值引用

    1. 左值 左值(lvalue,left value),顾名思义就是赋值符号左边的值,可以取地址.准确来说,左值是表达式(不一定是赋值表达式)后依然存在的持久对象. 可以将左值看作是一个关联了名称的内 ...

最新文章

  1. 【TensorFlow2.0】(5) 数学计算、合并、分割
  2. 工程能力提升管理之道
  3. Python的Flask入门
  4. 使用Windows的分析等待链(analyze wait chain)来诊断没用响应的应用
  5. sql join教程
  6. 人脸扫描建模_人脸识别智能锁安全吗?
  7. Windows 7系统如何重装或安装IE8?
  8. 图像质量评价指标: PSNR 和 SSIM
  9. Celery实现定时任务crontab
  10. C++_C++中的关键字_标识符命名规则_数据类型之整形_short_int_long_longlong---C++语言工作笔记010
  11. git submodule add子模块的添加,--recurse-submodules递归克隆子项目
  12. Zend Optimizer not installed可能原因及解决方法
  13. wifidog php源码 配置,wifidog官方源码
  14. 如何对酒店的固定资产进行日常管理?
  15. 高斯分布4——联合概率分布
  16. java工作日志,如何写工作日志
  17. Cannot save setting
  18. 免实名域名是什么意思?
  19. 新一轮生态化创新之风,将由低代码刮起!
  20. 下一代手机设计的发展趋势

热门文章

  1. c++ 求四边形面积和周长_面向对象c++——三角形求周长和面积
  2. 阿里云OSS集成百度Ueidtor
  3. 多目标规划和最大最小化问题(含lingo解决
  4. 【JMeter】BeanShell读写Redis
  5. 碳交易机制下考虑需求响应的综合能源系统优化运行
  6. 17 . CAN 通讯实验
  7. 令人讨厌的是数学课,不是数学----《一个数学家的叹息》
  8. lj2400恢复出厂_联想LJ2400打印机有几种,清零方法是什么,只搜到一种清零方式,我的机器还不是这一种。...
  9. EM算法(1)—— 彻底理解EM算法推导
  10. 基于物联网的轻量级REST服务器的设计与实现【译】