当前位置: 首页 > news >正文

左值和右值

计算机硬件结构存在取数据和存数据,取数据是从一个地址读,存数据是向一个地址写。一般而言,有地址能被写的就在赋值表达式的左侧,被称为左值(l-value), 其它的被称为右值(r-value). 大部分编程语言都有左值和右值的概念。C++的左值和右值概念是最复杂的。

  • 汇编代码中一般用中括号或小括号包裹变量代表访问内存地址,可向里面写入代表左值。
  • C++11右值扩展成纯右值和将亡值,右值都可以移动,二者区别是将亡值是有身份的。
  • 右值引用更有意思,C++11增加它可以将右值的生命周期拉长,对于延续返回的局部变量生命期有奇效。
  • C++同时有左值引用和右值引用,C++11引入了万能引用。
  • C++提供is_lvalue_reference和is_rvalue_reference判断变量是左值还是右值引用。
  • 其他编程语言,像Java/C#/Python/Rust/Go/JS/PHP等左值和右值思想没有C++那么复杂,比较单纯,不再赘述。

常量和表达式

  • 常量一般是被编译器放进寄存器或者汇编指令中常量部分,没内存地址概念。
  • 表达式计算结果完全随着编译器而定,不能指代确定的内存地址。


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!


http://www.mrgr.cn/news/21051.html

相关文章:

  • 数据结构 栈 队列
  • IntelliJ IDEA 中实现 Spring Boot 项目 的自动编译
  • X 射线测厚仪-高效精准,厚度测量的卓越之选
  • react useEffect用法
  • 使用 Bert 做文本分类,利用 Trainer 框架实现 二分类,事半功倍
  • GBase8sV8.8安装指南
  • chapter04 IDEA使用与快捷键 知识点Note
  • [图解]识别类和属性-投资少见效快产量高
  • MySQL 中的 `LOWER()` 和 `UPPER()` 函数:大小写转换
  • 模型融合创新性好强!最新成果直接登顶SOTA,分分钟拿下顶会
  • Java笔试面试题AI答之JDBC(3)
  • 开关电源纹波测试方法
  • RHCE必过技巧,无需本人参加也可拿证?
  • 远程访问服务器
  • C语言手撕实战代码_二叉树_构造二叉树_层序遍历二叉树_二叉树深度的超详细代码实现
  • ubuntu16.04下qt5.7.1添加对openssl的支持
  • Minitab统计软件 | Minitab是什么?面对棘手的业务挑战,为什么越来越多企业选用 Minitab ?
  • 中国传媒业人工智能应用发展图谱2024
  • LTRharvest使用教程(中文首发)
  • Java进阶13讲__第九讲