【C++】运算符与表达式

💦运算符与表达式

💦 运算符

💦赋值运算符

单等号=
计算顺序从右向左

复合赋值运算符:+=、-=、*=、/=、%=等

💦算术运算符

一元运算符:++、–
如果++/–是单独的一条语句,那么前置和后置没有区别
在复杂语句中,前置++/–:将变量自增/自减1,然后在表达式中使用新值;后置++/–:在表达式中使用当前值,表达式运行完毕,变量再自增/自减1。
二元运算符:+、-、*、/、%

%取模时最终结果的符号与第一个操作数的符号一致

三元运算符:?:

string str=1>0?1:0;

💦关系运算符

>、<、>=、<=、==、!=等,结果为bool类型

💦逻辑运算符

在这里插入图片描述

💦位运算符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

既然原码才是被人脑直接识别并用于计算表示的方式,为何还会有反码和补码呢?
首先,因为人脑可以知道第一位是符号位,在计算的时候我们会根据符号位选择对应真值的加减。
但对于计算机,加减乘数已经是最基础的运算,要设计的尽量简单。计算机辨别“符号位”显然会让计算机的基础电路设计变得十分复杂!于是人们想出了将符号位也参与运算的方法。
我们知道,根据运算法则减去一个正数等于加上一个负数。1-1=1+(-1)所以机器可以只有加法而没有减法,这样计算机运算的设计就会更加简单了。
于是人们开始探索,将符号位也参与运算,并只保留加法的方法。
使用原码计算1-1=0:
1-1=1+(-1)=[00000001]原+[10000001]原=[10000010]原=-2
使用原码并让符号位也参与运算后,减法就会出现错误。
为了解决原码做减法的问题,出现了反码:
1-1=1+(-1)
=[00000001]原+[1000001]原
=1反+11111110反=[11111111]反
=[10000000]原
=-0
发现使用反码计算减法时,结果的真值部分是正确的。唯一的问题出现在的0这个特殊数值上,虽然人们理解+0和-0都是一样的,但是0带符号是没有意义的。而且会有[00000000]和[10000000]两个原码表示0
于是补码的出现,完美解决了0符号问题,以及两个编码的问题:
1-1=1+(-1)
=[00000001]原+[10000001]原
=[00000001]反+[11111110]反
=[00000001]补+[11111111]补
=[00000000]补=[0000000]原-正数的原码、反码、补码是一样的
这样,0用[00000000]表示,以前出现的-0问题就不存在了,而且可以用
[10000000]表示-128(这里注意:因为实际上是使用以前的-0补码来表示-128所以-128并没有原码和反码表示。对于从-128的补码[10000000]算出的原码是[00000000]-是不正确的!)
在这里插入图片描述

💦运算符优先级

在这里插入图片描述
()>一元运算符>sizeof>!>算术运算符>关系运算符>&&>||>赋值运算符>|

💦 表达式

符号与操作数的组合

💦if结构

先判断后执行

if(true){
	//代码块1
}
else{
	//代码块2
}

在这里插入图片描述
多重if结构

if(条件1){
	//代码块1
}
else if(条件2){
	//代码块2
}
else if(条件3){
	//代码块3
}
else{
	//代码块4
}

在这里插入图片描述

💦switch

在这里插入图片描述

#include <iostream>
using namespace std;
int main()
{
    char input;
    cin >> input;
	switch (input)
	{
	case 'a': case 'A':
	case 'e': case 'E':
	case 'i': case 'I':
	case 'o': case 'O':
	case 'u': case 'U':
		cout << input << "是元音字母" << endl;
		break;
	default:
		cout << input << "不是元音字母" << endl;
		break;
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZoomToday

给作者倒一杯卡布奇诺

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值