C++——运算符NO.3

三、运算符

作用:用于执行代码的运算

本章我们主要讲解以下几类运算符:
在这里插入图片描述

3.1 算术运算符

作用:用于处理四则运算

算术运算符包括以下符号:
在这里插入图片描述
示例1:

//加减乘除
int main() {
 
	int a1 = 10;
	int b1 = 3;
 
	cout << a1 + b1 << endl;
	cout << a1 - b1 << endl;
	cout << a1 * b1 << endl;
	cout << a1 / b1 << endl;  //两个整数相除结果依然是整数
 
	int a2 = 10;
	int b2 = 20;
	cout << a2 / b2 << endl; 
 
	int a3 = 10;
	int b3 = 0;
	//cout << a3 / b3 << endl; //报错,除数不可以为0
 
	//两个小数可以相除
	double d1 = 0.5;
	double d2 = 0.25;
	cout << d1 / d2 << endl;   //运算的结果也可以是小数
 
	system("pause");
	return 0;
}

总结:在除法运算中,除数不能为0

示例2:

//取模
int main() {
 
	int a1 = 10;
	int b1 = 3;
 
	cout << 10 % 3 << endl;    //输出:1
 
	int a2 = 10;
	int b2 = 20;
 
	cout << a2 % b2 << endl;  //输出:10
  
	int a3 = 10;
	int b3 = 0;
 
	//cout << a3 % b3 << endl; //取模运算时,除数也不能为0
 
	//两个小数不可以取模
	double d1 = 3.14;
	double d2 = 1.1;
 
	//cout << d1 % d2 << endl;   //输出:10
 
	system("pause"); 
	return 0;
}

总结:只有整型变量可以进行取模运算,小数之间不可以取模

示例3:

//递增
int main() {
 
	//后置递增
	int a = 10;
	a++;                    //等价于a = a + 1
	cout << a << endl;     //输出:11
 
	//前置递增
	int b = 10;
	++b;
	cout << b << endl;      //输出:11
 
	//区别
	//前置递增先对变量进行++,再计算表达式
	int a2 = 10;
	int b2 = ++a2 * 10;
	cout << a2 << endl;      //输出:11
	cout << b2 << endl;      //输出:110
 
	//后置递增先计算表达式,后对变量进行++
	int a3 = 10;
	int b3 = a3++ * 10;
	cout << a3 << endl;      //输出:11
	cout << b3 << endl;      //输出:100
 
	system("pause");
	return 0;
}

总结:前置递增先对变量进行++,再计算表达式;后置递增先计算表达式,后对变量进行++ 。

3.2 赋值运算符

作用:用于将表达式的值赋给变量

赋值运算符包括以下几个符号:
在这里插入图片描述
示例:

int main() {
 
	//赋值运算符
 
	// =
	int a = 10;
	a = 100;
	cout << "a = " << a << endl;   //输出:100
 
	// +=
	a = 10;
	a += 2; // a = a + 2;
	cout << "a = " << a << endl;   //输出:12
 
	// -=
	a = 10;
	a -= 2; // a = a - 2
	cout << "a = " << a << endl;  //输出:8
 
	// *=
	a = 10;
	a *= 2; // a = a * 2
	cout << "a = " << a << endl;  //输出:20
 
	// /=
	a = 10;
	a /= 2;  // a = a / 2;
	cout << "a = " << a << endl;  //输出:5
 
	// %=
	a = 10;
	a %= 2;  // a = a % 2;
	cout << "a = " << a << endl;  //输出:0
 
	system("pause");
	return 0;
}

3.3 比较运算符

作用:用于表达式的比较,并返回一个真值或假值

比较运算符有以下符号:
在这里插入图片描述
示例:

int main() {
 
	int a = 10;
	int b = 20;
 
	cout << (a == b) << endl; // 0 
 
	cout << (a != b) << endl; // 1
 
	cout << (a > b) << endl; // 0
 
	cout << (a < b) << endl; // 1
 
	cout << (a >= b) << endl; // 0
 
	cout << (a <= b) << endl; // 1
	
	system("pause");
	return 0;
}

注意:C和C++ 语言的比较运算中, “真”用数字“1”来表示, “假”用数字“0”来表示。
   比较的时候要加:()

3.4 逻辑运算符

作用:用于根据表达式的值返回真值假值

逻辑运算符有以下符号:
在这里插入图片描述
示例1:逻辑"非"

//逻辑运算符  --- 非
int main() {
 
	int a = 10;
 
	cout << !a << endl; // 0
 
	cout << !!a << endl; // 1
 
	system("pause"); 
	return 0;
}

> 总结: 真变假,假变真

示例2:逻辑"与"

//逻辑运算符  --- 与
int main() {
 
	int a = 10;
	int b = 10;
	cout << (a && b) << endl;// 1
 
	a = 10;
	b = 0;                    //=0 表示:假
	cout << (a && b) << endl;// 0 
 
	a = 0;
	b = 0;
	cout << (a && b) << endl;// 0
 
	system("pause");
	return 0;
}

总结:逻辑与运算符总结: 同真为真,其余为假

示例3:逻辑或

//逻辑运算符  --- 或
int main() {
 
	int a = 10;
	int b = 10;
	cout << (a || b) << endl;// 1
 
	a = 10;
	b = 0;
	cout << (a || b) << endl;// 1 
 
	a = 0;
	b = 0;
	cout << (a || b) << endl;// 0
 
	system("pause");
	return 0;
}

逻辑或运算符总结: 同假为假,其余为真

### C++ 中的位运算符及其用法 #### 一、基本概念 C++ 提供了一组用于执行按位操作的运算符。这些运算符可以直接对二进制表示的数据进行操作,在处理低级别数据或者优化性能方面非常有用。 #### 二、常见的位运算符 - **按位与 (&)** 对两个操作数的每一位都做逻辑与运算,只有当对应的两位均为1时结果才为1;否则为0。如果A=60 (即0011 1100),B=13(即0000 1101),那么`A&B`=12(即0000 1100)[^1]。 - **按位或 (|)** 当对应位置上至少有一个1存在时返回1,全为0则返回0。对于上述例子来说 `A | B` 将得到61(即0011 1101)。 - **异或 (^)** 如果相应位不同,则该位的结果为1;相同则为0。因此 `(A ^ B)` 得到的是49(即0011 0001)。 - **取反 (~)** 单目运算符,它会翻转其后面的操作数的所有比特位。例如 `~A` (-61) 表现形式取决于具体机器架构下的补码表达方式。[^3] - **左移 (<<)** 把左边的操作数向左移动指定数量的位置,并在右边填充零。比如 `A << 2` 结果是240(即1111 0000),这相当于乘以2的幂次方。 - **右移 (>>)** 左边的操作数被向右移动一定数目个位置,高位丢弃低位补充符号位或0视乎编译器实现而定。如 `A >> 2` 是等于15(即0000 1111),大致相当于除以2的幂次方。 #### 三、复合赋值运算符 除了单独使用的位运算符外,还可以将其与其他运算组合成更简洁的形式——复合赋值运算符。例如: ```cpp a &= b; // 等价于 a = a & b; a <<= n; // 等同于 a = a << n; ``` 这种写法不仅使代码更加紧凑易读,而且通常也能提高程序运行效率[^2]。 #### 四、实际应用案例 考虑下面一段简单的代码来演示如何利用位运算完成某些特定的任务: ```cpp #include <iostream> using namespace std; int main() { int num = 8; // 假设我们想判断这个数字是不是2的整数倍 bool isPowerOfTwo = !(num & (num - 1)); cout << ((isPowerOfTwo)? "Yes":"No") << endl; } ``` 在这个例子中,通过检查给定数值与其减去1后的按位与是否为0即可快速得知该数是否为2的正整数次幂。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值