C++学习笔记三(表达式)

1.1 基本概念
表达式由一个或多个运算对象组成,对表达式求值将得到一个结果。

组合运算符和运算对象:
要理解含有多个运算符的复杂表达式,首先要理解运算符的优先级、结合律、以及运算对象的求值顺序
运算对象转换:
求值过程中,运算对象常常由一种类型转换成另外一种类型。
重载运算符:
为已存在的运算符赋予了另外一层含义
左值和右值:
当一个对象被用作右值时,用的是对象的值(内容),当一个对象被用作左值时,用的是对象的身份(在内存中的位置)。

1.2 算术运算符
在这里插入图片描述
一元运算符的优先级最高,接下来是乘除法,优先级最低的是加减法,所有运算符都满足左结合律。

布尔不应该参与运算
bool b = true;//被提升为1
bool b2 = -b; //b2=-1 ,为真,变为1,b2还是true

运算符%,负责计算两个整数相除所得的余数(符号应该和分子一样)。运算符/,负责计算两个整数相除所得的商(为整数)。
在这里插入图片描述
1.3 逻辑和关系运算符
返回值为布尔类型,运算对象和求值结果都是右值。
在这里插入图片描述
1.4赋值运算符
赋值运算符左侧运算对象必须是一个可修改的左值;满足右结合律。

1.5 递增(++)和递减(–)运算符
有前置和后置两种形式
例子:
int i = 0,j;
j = ++i; //j=1,i=1
j = i++; //j=1,i=2

如果我们想在一条复合表达式中即将变量加减1又能使用它原来的值,可以使用后置版本的递增和递减。

1.6 成员访问运算符
点运算符和箭头运算符:
点运算符获取类对象的一个成员
箭头运算符作用于一个指针类型的运算对象,结果是一个左值。

1.7 条件运算符
形式(? :)
cond ? expr1 : expr2;
满足右结合律
习题:

1.8 位运算符
在这里插入图片描述
移位运算符满足左结合律,优先级处于中间,比算术运算符优先级低,但比关系运算符、赋值运算符和条件运算符的优先级高,在使用多个运算符时,注意加上括号。
在这里插入图片描述

1.9 sizeof运算符
返回一条表达式或一个类型名字所占的字节数,满足右结合律。

在这里插入图片描述
练习:

1.10 逗号运算符
含有两个运算对象,按照从左向右的顺序。常用于for循环中。
在这里插入图片描述

1.11 类型转换
在C++语言中,某些类型之间有关联,也已用另一种关联类型的对象或值来替代。
隐式转换:
类型转换是自动执行的,无须程序员介入。
在这里插入图片描述
算术转换:
定义了一套类型转换的层次,其中运算符的运算对象将转换成最宽的类型。
例子:
在这里插入图片描述在这里插入图片描述
其他隐式类型转换
数组转换为指针
指针的转换
转换成布尔类型
转换成常量

显式转换
这种方法本质上是非常危险的。
强制类型转换形式如下与c语言不一样:
cast-name< type >(expression)
type是要转换的目标类型而expression是要转换的值。
cast-name是static_cast、dynamic_cast、const_cast和reinterpret_cast中的一种。

运算符优先级表格
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值