[C++] 运算符

本文详细介绍了C++中的算术运算符(加、减、乘、除、取模)、自增自减、比较运算符、逻辑运算符以及位运算符(与、或、异或、取反、左移、右移),通过示例展示了如何在代码中运用这些运算符进行操作。
摘要由CSDN通过智能技术生成

系列文章目录

1、初识C++
http://t.csdnimg.cn/WIT0Z
2、数据类型
http://t.csdnimg.cn/CoURP
3、运算符
http://t.csdnimg.cn/5Q7qc
未完待续



前言

本文将介绍一下几种运算符:
算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符


一、算术运算符

1.加、减、乘、除运算符

#include <iostream>
using namespace std;

int main () {
	//加法运算符
	int a = 10 + 20;
	cout << a << endl;

	//减法运算符
	a = 10 - 20;
	cout << a << endl;
	
	//乘法运算符
	a = 10 * 20;
	cout << a << endl;

	//除法运算符
	a = 10 / 20;
	cout << a << endl;
	//a的类型为整型,但是10 / 20有小数位0.5所以只取商0,余数省略
	//改为浮点型就可以输出小数位
	
	return 0;
}

在这里插入图片描述

2. 取模运算符

% ➡️将两个数相除的余数作为结果

#include <iostream>
using namespace std;

int main() {
	int a = 10 % 20;
	//取模,只取余数作为结果,10 / 20的结果为0.5,余数为5
	cout << a << endl;

	a = 20 % 10;//20 / 10的结果为2,被整除了余数就为0
	cout << a << endl;

	return 0;
}

注意:除数不可为0、小数不可以做取模运算

在这里插入图片描述

3.自增、自减运算符

++ ➡️执行之后加1
- - ➡️执行之后减1

#include <iostream>
using namespace std;

int main() {
	//自增运算符
	//分为前置++和后置++
	int a = 1;
	int b = a++;//前置++,先使用再自增1
	cout << a << endl;//结果为2,在b被赋值时a自增1
	cout << b << endl;//结果为1,先把a自增1之前的值赋给b,然后a再自增1

	cout << "\n";

	a = 1;
	b = ++a;//后置++,先自增1再使用
	cout << a << endl;//结果为2,在b被赋值时自增1
	cout << b << endl;//结果位2,先使a自增1,再将a自增后的值赋给b

	a = 1;
	b = 2;
	cout << a++ << endl;//先使用了a输出,a再自增1
	cout << ++b << endl;//b先自增1,再输出b

	return 0;
}

在这里插入图片描述


下面的自减就是自减1,规则与自增相同

#include <iostream>
using namespace std;

int main() {
	//自减运算符
	//分为前置--和后置--
	int a = 1;
	int b = a--;//前置--,先使用再自减1
	cout << a << endl;//结果为2,在b被赋值时a自减1
	cout << b << endl;//结果为1,先把a自减1之前的值赋给b,然后a再自减1

	cout << "\n";

	a = 1;
	b = --a;//后置--,先自减1再使用
	cout << a << endl;//结果为2,在b被赋值时自减1
	cout << b << endl;//结果位2,先使a自减1,再将a自减后的值赋给b

	a = 1;
	b = 2;
	cout << a-- << endl;//先使用了a输出,a再自减1
	cout << --b << endl;//b先自减1,再输出b

	return 0;
}

在这里插入图片描述

二、比较运算符

== ➡️比较两个值是否相等,相等返回真,不相等返回假

#include <iostream>
using namespace std;

int main() {
	// == 
	cout << (1 == 1) << endl;//输出1,1与1相等,结果为真
	cout << (1 == 2) << endl;//输出0,1与2不相等,结果为假

	return 0;
}

在这里插入图片描述


!= ➡️ 比较两个值是否不相等,不相等返回真,相等返回假

#include <iostream>
using namespace std;

int main() {
	// !=
	cout << (1 != 1) << endl;//输出0,1与1相等,结果为假
	cout << (1 != 2) << endl;//输出1,1与1不相等,结果为假

	return 0;
}

在这里插入图片描述


> ➡️ 比较左边的值是否大于右边的值,大于返回真,小于返回假
< ➡️ 比较左边的值是否小于右边的值,小于返回真,大于返回假
>= ➡️ 比较左边的值是否大于等于右边的值,大于等于返回真,小于返回假
<= ➡️ 比较左边的值是否小于等于右边的值,小于等于返回真,大于返回假

#include <iostream>
using namespace std;

int main() {
	// >
	cout << (1 > 2) << endl;//输出0,1不大于2,为假
	cout << (2 > 1) << endl;//输出1,2大于1,为真

	cout << "\n";

	// <
	cout << (1 < 2) << endl;//输出1,1小于2,为真
	cout << (2 < 1) << endl;//输出0,2大于1,为假

	cout << "\n";

	// >=
	cout << (1 >= 1) << endl;//输出1,1大于等于1,为真
	cout << (2 >= 1) << endl;//输出1,2大于等于1,为真

	cout << "\n";

	// <=
	cout << (1 <= 1) << endl;//输出1,1小于等于1,为真
	cout << (2 <= 1) << endl;//输出0,2大于等于1,为假
	return 0;
}

三、位运算符

1. 与运算符

& ➡️若左边的值与右边的值对应的比特位都为1则结果也为1,否则为0

#include <iostream>
using namespace std;

int main() {
	// &
	int a = 1;
	int b = 2;
	cout << (a & b) << endl;//输出a & b的结果,为1
	return 0;
}

在这里插入图片描述
0 & 0 = 0
1 & 0 = 0
0 & 1 = 0
1 & 1 = 1
在这里插入图片描述

2.与运算符

| ➡️ 若左边的值与右边的值对应的比特位中有一位为1则结果也为1,否则为0

#include <iostream>
using namespace std;

int main() {
	// |
	int a = 1;
	int b = 2;
	cout << (a | b) << endl;//输出a | b的结果,为3
	return 0;
}

在这里插入图片描述
0 & 0 = 0
1 & 0 = 1
0 & 1 = 1
1 & 1 = 1

在这里插入图片描述

3. 异或运算符

^ ➡️ 若左边的值与右边的值对应的比特位中有一位为1则结果为1,全为1和全为0则结果为0

#include <iostream>
using namespace std;

int main() {
	// ^
	int a = 5;
	int b = 6;
	cout << (a ^ b) << endl;//输出a ^ b的结果,为3
	return 0;
}

在这里插入图片描述
0 & 0 = 0
1 & 0 = 1
0 & 1 = 1
1 & 1 = 0
在这里插入图片描述

4. 取反运算符

~ ➡️将一个值的二进制位按位取反,0变为1,1变为0

正数取反

#include <iostream>
using namespace std;

int main() {
	// ~
	int a = 5;
	cout << (~a) << endl;//输出~a的结果,为-6
	return 0;
}

在这里插入图片描述
在这里插入图片描述
tips:
正数的原码、反码、补码都相同
负数的原码是自己本身,反码是原码取反符号位不变,补码是反码加1

负数取反

#include <iostream>
using namespace std;

int main() {
	// ~
	int a = -6;
	cout << (~a) << endl;//输出~a的结果,为5
	return 0;
}

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

5. 左移、右移运算符

<< ➡️ 将一个数的二进制位向左移动n位,右边补n个0,左边去掉n位
>> ➡️ 将一个数的二进制位向右移动n位,正数左边补n个0,负数左边补n个1,右边去掉n位
以上均在补码的情况下完成

#include <iostream>
using namespace std;

int main() {
	// <<
	int a = 1;
	cout << (a << 1) << endl;//输出a左移1位的结果,为2
	a = -1;
	cout << (a << 1) << endl;//输出a左移1位的结果,为-2

	cout << "\n";

	// >>
	a = 1;
	cout << (a >> 1) << endl;//输出a右移1位的结果,为0
	a = -1;
	cout << (a >> 1) << endl;//输出a右移1位的结果,为-1

	return 0;
}

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

四、赋值运算符

#include <iostream>
using namespace std;

int main() {
	// =
	int a = 10;

	// +=
	a += 10; //a = a + 10;
	cout << a << endl;

	// -=
	a = 10;
	a -= 2; //a = a - 2;
	cout << a << endl;

	// *=
	a = 10;
	a *= 2;//a = a * 2;
	cout << a << endl;

	// /=
	a = 10;
	a /= 2;//a = a / 2;
	cout << a << endl;

	// %=
	a = 10;
	a %= 2; //a = a % 2;
	cout << a << endl;
	
	return 0;
}

在这里插入图片描述

#include <iostream>
using namespace std;

int main() {
	// &=
	int a = 5;
	a &= 6;// a = a & 6
	cout << a << endl;

	// |= 
	a = 5;
	a |= 6;// a = a | 6
	cout << a << endl;

	// ^=
	a = 5;
	a ^= 6;// a = a ^ 6
	cout << a << endl;

	// <<=
	a = 5;
	a <<= 6;// a = a << 5
	cout << a << endl;

	// >>= 
	a = 5;
	a >>= 6;//a = a >> 6;
	cout << a << endl;
	
	return 0;
}

在这里插入图片描述

五、逻辑运算符

逻辑与 && ➡️ 若左值与右值同时为真,则结果为真,否则为假
逻辑或 || ➡️ 若左值与右值有一个为真,则结果为真,否则为假
逻辑非 ! ➡️ 若右值为真,则结果为假,否则为真

#include <iostream>
using namespace std;

int main() {
	// &&
	cout << (1 && 2) << endl;//1与2都是非0的数,结果为真
	cout << (0 && 2) << endl;//0为假,2为真,不同时为真,结果为假

	cout << "\n";

	// ||
	cout << (1 || 2) << endl;//1与2都是非0的数,结果为真
	cout << (0 || 2) << endl;//0为假,2为真,有一个为真,结果为真
	cout << (0 || 0) << endl;//左右均为0,结果为假

	cout << "\n";

	// !
	cout << !1 << endl;//1为真,输出相反的结果,假
	cout << !0 << endl;//0为假,输出相反的结果,真

	return 0;
}

在这里插入图片描述


总结

下期预告:程序流程结构

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值