C++ 运算符相关知识小结

疫情所迫,希望用这种方法督促自己坚持学习。同时记录在找工作过程中的艰辛不易。博客内容持续增减修改,都为摘录和个人理解。欢迎各位批评指正其中错误,相互勉励,共同进步。

一、算数运算符

对于算数运算符类型如下所示。其中优先级顺序从上往下逐级递减。
在这里插入图片描述
需要注意的情况:

1、一元负号运算符与bool类型

bool a = True;      //将a的值赋值为True
bool b = -a;        //b的值也为True

经过上述赋值之后,b的值为True。实际上首先a的值被定义为1,因此b为-1。再转换为bool类型,而bool类型只有当为0时才为False。

2、取余运算符与

(-a) % b            //等价于 - (a % b)
a % (-b)            //等价于 (a % b)
(-a) % (-b)         //等价于 - (a % b)

二、逻辑和关系运算符

在这里插入图片描述
需要注意的情况:

1、逻辑与与逻辑或

  • 对于逻辑与,当且仅当左侧为真时,才会为右侧的表达式求值;
  • 对于逻辑或,当且仅当左侧为假时,才会为右侧的表达式求值;

三、赋值运算符

赋值运算符的优先级小于关系运算符,因此在条件语句中,赋值部分通常应该加上括号。

int i;
while ((i = get_value()) != 42){
	......
}

四、递增和递减运算符

递增和递减运算符为“++” “–”

int i = 0;
int a = ++i;           //前置版本将i加1后的结果赋值给a,因此a=1,i=1
int b = i++;           //后置版本,将i的结果给b,再将i加1,因此b=1,i=2
cout << i <<endl;      //输出为2

需要注意的情况:

1、前置版本和后置版本的区别
除非必须,否则不用递增递减的后置版本。因为后置版本会额外开辟空间保存变化前的值。对于无需保存赋值前的值得代码,前置版本能大大优化程序执行效率,避免错误。

2、混用解引用和递增运算符

vector<int> nums = { 0,1,4,3,4,5,6 };
int *p = &nums[0];
cout << (*p)++ << endl;             //输出结果为0
cout << *p++ << endl;              //输出结果为1

五、成员访问运算符

成员访问运算符分为箭头运算符和点运算符

pt -> mem       //箭头运算符
(*pt).mem       //点运算符

六、条件运算符

条件运算符当条件成立时执行exper1语句,否则执行pxper2语句

cond ? exper1 : exper2;

将vector中的奇数变成平方值

vector<int> a = { 0,1,2,3,4,5,6,7,8,9 };
for (auto bed = a.begin(); bed != a.end(); ++bed)
	*bed = (*bed % 2 == 0) ? *bed : *bed**bed;
for (auto &i : a)
	cout << i << endl;

七、位运算符

在这里插入图片描述

八、sizeof运算符

sizeof (type)
sizeof expr

在这里插入图片描述

九、运算符优先级

淡云一笔,鞍落三服
单目 算数 移位 比较 按位 逻辑 三目 赋值
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值