【Primer C++学习笔记】4. 表达式

4. 表达式

目录

4. 表达式

4.1 基础

4.1.1 基本概念

4.1.2 优先级与结合律

4.1.3 求值顺序

4.2 算术运算符

4.3 逻辑和关系运算符

4.4 赋值运算符

4.5 递增和递减运算符

4.6 成员访问运算符

4.7 条件运算符

4.8 位运算符

4.9 sizeof运算符

4.10 逗号运算符

4.11 类型转换

4.11.1 算术转换

4.11.2 隐式转换

4.11.3 显示转换

4.12 运算符优先级表


4.1 基础

4.1.1 基本概念

  • 一元运算符:作用于一个运算对象(&,*解引用)
  • 二元运算符:作用于两个运算对象(==,*乘法)
  • 三元运算符
  • 函数调用
  1. 组合运算符和运算对象:运算符的优先级、结合律以及运算对象的求值顺序;
  2. 运算对象转换:表达式求值的过程中会涉及到类型转换,小整数类型通常会被提升成较大的整数类型;
  3. 重载运算符:运算符作用与于类类型的对象时用户可以自行定义含义,即为已存在的运算符赋予另外一层含义,但是运算对象的个数、运算符的优先级和结合律都是无法改变的;
  4. 左值和右值:当对象被用作左值的时候用的是对象在内存中的位置,被用作右值的时候用的是对象的值;

4.1.2 优先级与结合律

4.1.3 求值顺序

  • && 先求左侧运算对象的值,当左侧运算对象的值为真时才求右侧运算对象的值(短路求值)
  • ||  先求左侧运算对象的值,当左侧运算对象的值为假时才求右侧运算对象的值(短路求值)
  • ?: 
  • , 

4.2 算术运算符

左结合律:当优先级相同时按照从左向右的顺序进行组合


4.3 逻辑和关系运算符


4.4 赋值运算符

  • 左侧运算对象必须是一个可修改的左值
  • 满足右结合律
  • 赋值运算符优先级较低

4.5 递增和递减运算符

++/--

  • 前置:首先将运算对象+1/-1,然后将改变后的对象作为求值结果
  • 后置:求值结果是运算对象改变之前那个值的副本


4.6 成员访问运算符

点运算符:(*ptr).mem

箭头运算符:ptr->mem

 


4.7 条件运算符

cond ? expr1 : expr2;

cond条件为真时返回expr1,为假则返回expr2

条件运算符优先级非常低,在长表达式中需要在表达式两端加上括号。


4.8 位运算符

 作用于整数类型的运算对象,把运算对象看成是二进制位的集合

 


4.9 sizeof运算符

返回一个表达式或一个类型名字所占的字节数。


4.10 逗号运算符

逗号运算符的结果是右侧表达式的值

每次循环迭代ix和cnt相应改变 


4.11 类型转换

4.11.1 算术转换

把一种算术类型转换成另外一种算术类型,比如整型提升:小整数类型(bool,char,signed char,unsigned char,short,unsigned short)转换成较大的整数类型(int);

4.11.2 隐式转换

  • 表达式中,比int类型小的整型值被提升为较大的整数类型;
  • 在条件中,非布尔值转换成布尔值;
  • 初始化中,初始值转换成变量的类型;
  • 赋值中,右侧运算对象转换成左侧运算对象的类型;
  • 算术运算或关系运算的运算对象有多种类型也会转换成同一种类型;
  • 函数调用时也会发生类型转换;

4.11.3 显示转换

命名的强制类型转换(需要避免强制类型转换):

  • type:转换的目标类型
  • expression:要转换的值
  • cast-name:static_cast,dynamic_cast,const_cast,reinterpret_cast

static_cast:任何具有明确定义的类型转换

 

dynamic_cast:支持运行时类型识别

const_cast:只能改变运算对象的底层const

reinterpret_cast:为运算对象的位模式提供较低层次上的重新解释(没懂,别用)


4.12 运算符优先级表

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值