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

C++ 中的左值(Lvalues)和右值(Rvalues)

C++ 中有两种类型的表达式:

  • 左值(lvalue):左值参数是可被引用的数据对象,例如,变量、数组元素、结构成员、引用和解除引用的指针都是左值。非左值包括字面常量(用引号起的字符串除外,它们由其他地址表示和包含多项的表达式)。在C语言中,左值最初指的是出现在赋值语句左边的实体,但这是引用关键字const之前的情况。现在,常规变量和const变量都可视为左值,因为可以通过地址访问它们,但常规变量属于可修改的左值,而const属于不可修改的左值。左值可以出现在赋值号的左边或右边。
  • 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。

变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句:

int g = 20;

但是下面这个就不是一个有效的语句,会生成编译时错误:

10 = 20;

http://www.lryc.cn/news/139580.html

相关文章:

  • html流光按钮
  • HAProxy+nginx搭建负载均衡群集
  • logback-spring.xml 的配置及详解(直接复制粘贴可用)
  • C语言易错点整理
  • 60.每日一练:回文数(力扣)
  • 算法通关村第5关【青铜】| Hash和队列的特征
  • C++:函数
  • Linux网络编程:libevent事件通知库
  • java.lang.reflect.InvocationTargetException:null报未知异常
  • MySQL高级篇——MySQL架构篇1(Linux下MySQL8的安装与使用)
  • 解决 go mod tidy 加载模块超时
  • 金融市场中的机器学习;快手推出自研语言模型“快意”
  • 【面试刷题】——什么是深拷贝和浅拷贝?
  • 物联网(IoT)安全挑战与解决方案: 分析物联网设备面临的安全威胁,以及如何设计和管理安全的IoT生态系统
  • Ubuntu 22.04.3 LTS 维护更新发布
  • 平安健康,找到了医疗服务的价值密码
  • ❤ vue 使用原生组件
  • 4.12 TCP 连接,一端断电和进程崩溃有什么区别?
  • 十二、pikachu之URL重定向
  • 贝叶斯公式中的动词 命名技巧
  • ctfshow-web13 文件上传
  • Python项目开发案例————学生信息管理系统(附源码)
  • 2023-08-25力扣每日一题
  • Vue3中的计算属性和属性监听
  • 微信开发之一键修改群公告的技术实现
  • 【git】工作场景中常用的git命令
  • Vue路由(详解)
  • 打开软件提示msvcp140.dll丢失的解决方法,msvcp140主要丢失原因
  • 关于路由器和DNS解析的一些新理解
  • vscode 与 C++