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

在这里插入图片描述

九、运算符优先级

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值