第三节 C++ 运算符

本文详细介绍了C++中的运算符,包括算术运算符(如加、减、乘、除、自增、自减)、赋值运算符、比较运算符和逻辑运算符。通过实例展示了这些运算符的用法,并提供了编程题目,如实现计算器功能、位数分离以及解决鸡兔同笼问题,帮助读者加深对运算符的理解和运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

掌握知识点

  • 算术运算符
  • 赋值运算符
  • 比较(关系) 运算符
  • 逻辑运算符

1. 运算符概述

  1. 在C++中,运算符 是用于执行各种操作的特殊符号。它们可以用于操作数据,进行数学计算,控制程序流程等。
  2. 用于执行代码的运算 。
运算符类型作用
算术运算符用于 数值类型的运算操作
赋值运算符用于将表达式的 值赋给变量
比较运算符用于 表达式的比较,并返回一个 真值,或者 ,假值
逻辑运算符用于表达式的值 返回真值或者假值。

1.1 算术运算符

  1. 在现实生活中,我们常常会遇见数字的运算操作。
    • 例如计算器中的计算,加,减,乘,除。
  2. 在程序中也是如此, 算术运算符,常常用于数值类型操作。
    • A 值为10B值为20。
运算符描述实例
+把两个操作数相加A + B 将得到 30
-从第一个操作数中减去第二个操作数A - B 将得到 -10
*把两个操作数相乘A * B 将得到 200
/分子除以分母B / A 将得到 2
%取模运算符,整除后的余数B % A 将得到 0
++自增运算符,整数值增加 1A++ 将得到 11
自减运算符,整数值减少 1A-- 将得到 9
  • 自增和自减,可以放到变量前面也可以放到后面。
1.1.1 加,减,乘,除
  1. 针对运算符 +,-,*,/ 来运行的实例测试。

    • 整数类型, 做除法,会 保留整数小数类型,做除法,会 保留小数
    #include <iostream>
    using namespace std; 
    /*
    	1. 算数运算符  
    	+ - * / 
    */ 
    
    int main(){
    	
    	int a = 10;
    	int b = 3; 
    	
    	// 运算 + - * /  
    	cout<<"a+b的值 : " <<a+b <<endl;
    	cout<<"a-b的值 : " <<a-b <<endl; 
    	cout<<"a*b的值 : " <<a*b <<endl; 
    	cout<<"a/b的值 : " <<a/b <<endl;  //整数和整数运算还是整数. 
    	
    	// 浮点型double 计算
    	
    	double a_1 = 10;
    	double b_1 =3;
    	
    	//如果两个浮点型进行计算的话,会保留小数么?
    	cout <<"double浮点型计算: " <<a_1 /b_1 << endl; 
    	return 0 ; 
    } 
    
    • 计算结果
    a+b的值 : 13
    a-b的值 : 7
    a*b的值 : 30
    a/b的值 : 3
    double浮点型计算: 3.33333
    
  2. 有一个特殊的注意事项, 除数是不可以为0的。

    • 下面为代码片段。
    //除数不能为0
    	int a =10;
    	a/0 ; // 这个是不允许的.
    
1.1.2 自增,自减
  1. 自增和自减都是自己增加1或者减少1,但是符号放到前面和放到后面结果是不一样的。

    • ++或者-- 放在前面, 先自增或者自减,在运算。
    • ++或者-- 放在后面, 先运算,然后在自增或者自减
    #include <iostream>
    using namespace std;
    
    int main(){
    	// ++ 放前面先加后运算, ++放后面先运算后加(自减运算--同理)
    	int a = 3;
    	int b = 4;
    	
    	//第一种情况
    	a =++b;
    	cout << "b 的值是: " << b <<endl; 
    	cout << "a 的值是: " << a <<endl; 
    	
    	
    	cout<<"-------------------------"<<endl; 
    	
    	int c =3;
    	int d =4; 
    	//第二种情况
    	c = d++;
    	cout << "c 的值是: " << c <<endl; 
    	cout << "d 的值是: " << d <<endl; 
    	
    	return 0 ;
    }
    
  • 运行结果。

    b 的值是: 5
    a 的值是: 5
    -------------------------
    c 的值是: 4
    d 的值是: 5
    
    • 总结: 可以叫做前置递增,后置递增,前置递减,后置递减。
1.1.3 取模运算 %
  1. 在C++中,取模运算使用百分号符号(%)表示。它被用于计算两个整数 相除后的余数取模运算 只能用于 整数类型的操作数。

    • 注意1,规定: 不允许小数做取模运算 。
    • [Error] invalid operands of types 'double' and 'double' to binary 'operator%'
    #include <iostream>
    using namespace std;
    
    int main(){
     
     	//取模运算 ,取的是余数 
    	 int a = 10;
    	 int b = 3;
    	 
    	cout<<"取模运算 % : " << a%b <<endl; // 1
    	
    	
    	//2.规定 两个小数是不允许做取模运算的
    	double a_1 =3.14;
    	double b_1 = 0.5;
    	
    	//cpp[Error]类型为'double'和'double]的无效操作数到二进制'operator%'
    	cout<<"取模运算 % : " << a_1%b_1 <<endl; 
      	return 0; 
    } 
    
  2. 注意2 ,模数不能为 0 。

    • 下列为代码片段。
    	 // % 取余数 ,不能 %0
    	 int a = 10;
    	 a%0; //这是不允许的.
    

1.2 赋值运算符

  1. 用于表达式的值 赋值给变量。
    • 例如,int a = 10将表达式的右边赋值给左边。
运算符描述实例
=简单的赋值运算符,把右边操作数的值赋给左边操作数C = A + B 将把 A + B 的值赋给 C
+=加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数C += A 相当于 C = C + A
-=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数C -= A 相当于 C = C - A
*=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数C *= A 相当于 C = C * A
/=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数C /= A 相当于 C = C / A
%=求模且赋值运算符,求两个操作数的模赋值给左边操作数C %= A 相当于 C = C % A
  1. 使用案例,但是注意 c的值是一直在变换的。

    #include <iostream>
    using namespace std;
    /*
    	赋值运算符  = += -= *= /= %=
    	
    	注意: 程序是由上到下执行的, c的赋值会一直在变化, 
    */
    int main(){
    	int a =20;
    	int c ; 
    	
    	c = a; //  = 赋值运算符 
    	cout<< "c的值是: =  " << c <<endl; 
    	
    	c +=a; // += 加并且赋值 
    	cout << "c的值是: += " <<c <<endl; 
    	
    	c -=a; // -= 减并且赋值  
    	cout << "c的值是: -= " <<c <<endl; 
    	 
    	c *=a; //*= 乘并且赋值 
    	cout << "c的值是: *= "<< c <<endl;  
    	
    	c /=a; ///= 除并赋值 c = c/a
    	cout << "c的值是: /= "<<c <<endl; 
    	 
    	c %=a; // %= 模余并赋值 
    	cout << "c的值是: %=" << c <<endl; 
    	 
    	return 0 ;
    } 
    
  • 输出结果。

    c的值是: =  20
    c的值是: += 40
    c的值是: -= 20
    c的值是: *= 400
    c的值是: /= 20
    c的值是: %=0
    

1.3 比较运算符

  1. 比较运算符,又叫 关系运算符,主要作用,用于表达式的比较。
    • 既然是比较,就会有结果,根据结果会返回一个值 或者 假。
    • 假设,变量 A 的值为 10变量 B 的值为 20,则:
运算符描述实例
==检查两个操作数的值是否相等,如果相等则条件为真(A == B) 不为真。
!=检查两个操作数的值是否相等,如果不相等则条件为真(A != B) 为真。
>检查左操作数的值是否大于右操作数的值,如果是则条件为真。(A > B) 不为真。
<检查左操作数的值是否小于右操作数的值,如果是则条件为真。(A < B) 为真。
>=检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。(A >= B) 不为真。
<=检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。(A <= B) 为真。
  1. 需要注意 1:
    • 在C++中 比较返回的值是布尔类型,如果是 真,则为 1,假为 0.
    • 下一个单元中 我们会使用 选择结构 if 关键字来与比较运算符一起实用。
    #include <iostream>
    using namespace std;
    /*
    	1. 用于表达式的比较. 
    		如果条件成立,返回真.
    		如果不成立就 返回假. 
    */
    int main(){
    	bool c ;
    	int a =10;
    	int b =20;
    	
    	//测试比较运算符
    	c = b>a;
    	cout <<"c的 > 结果是: "<< c << endl; 
    	//  >=  
    	c = b >=a;
    	cout <<"c的 >= 结果是: "<< c << endl; 
    	// cout << (b>=a) << endl;  //也可以使用这样的方式 
    	//!= 如果两个值不相同,则返回真,否则,返回假
    	c = b!=a;
    	cout <<"c的 != 结果是: "<< c << endl;
    	 
    	// == 号进行判断 
    	c = b==a;
    	cout <<"c的 == 结果是: "<< c << endl; 
    	// cout << (b==a) << endl;  //也可以使用这样的方式 
    	return 0;
    }
    
  • 输出结果。

    	c的 > 结果是: 1
    	c的 >= 结果是: 1
    	c的 != 结果是: 1
    	c的 == 结果是: 0
    

1.4 逻辑运算符

  1. 在生活中会遇见很多相似的场景:
    • 植物的生长需要 “阳光” “水”。
    • 身高小于130cm 或者 年龄大于60岁,去公园不用买票。
    • 考试成绩 低于 90分的同学,奖励游戏机一个。(非假即真)
  2. 用于根据表达式 左右两边的的值,返回真或者假。
    • True 为真 1 ,False 为 假 0。
运算符描述实例
&&称为逻辑运算符,并且的意思。如果两个操作数都 true,则条件为 true,有一个为假则返回假(A && B) 为 false。
II称为逻辑运算符, 或者的意思 。如果两个操作数中 有任意一个 true,则条件为 true。(A II B) 为 true。
!称为 逻辑运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false,非真就假,非假就真!(A && B) 为 true。
  1. 与,或,非 ,三种运算符。

    • 假设; A为真, B为假 。
    • 也可以使用 单与和单或 & 和 |
    #include <iostream>
    using namespace std;
    int main(){
    	/*逻辑运算符
    		&& 逻辑或  &  并且需要同时满足 
    		|| 逻辑 |      或者满足一个即可 
    		!  逻辑非 
    	*/
    	int a =2;
    	int b =5;
    	//逻辑与 & 和 && 
    	cout<<"单与&并且  : "<< ((a<3)&(b<4)) <<endl; 
    	cout<<"逻辑与&&并且 : "<< ((a<3)&&(b<4)) <<endl; 
    	
    	//逻辑或 | 和||
    	cout<<"单或|并且 : "<< ((a<3)|(b<4)) <<endl;
    	cout<<"逻辑或||并且 : "<< ((a<3)|(b<4)) <<endl;
    	
    	//非 ! 非真就假,非假就真 
    	cout<<"单个! : "<< (!(a<3)) <<endl; 
    	return 0;
    } 
    

2. 编程题:运算符使用

2.1 计算器

  1. 编写一个程序,要求用户输入两个整数,然后计算并输出它们的和、差、积和商。
#include <iostream>
using namespace std;
/*
1. 编写一个程序,要求用户输入两个整数,
		然后计算并输出它们的和、差、积和商。
*/
int main(){
	int num_1;
	int num_2; 
	//输入第一个数
	cout <<"输入第一个数:" ;
	//输入方法
	cin >> num_1; 
	//输入第一个数
	cout <<"输入第二个数:" ;
	//输入方法
	cin >> num_2; 
	
	//计算 加 减 乘 除 
	
	cout << "加法: " << (num_1+num_2) <<endl; 
	cout << "减法: " << (num_1-num_2) <<endl; 
	cout << "乘法: " << (num_1*num_2) <<endl; 
	cout << "除法: " << (num_1/num_2) <<endl; 
	
	
	return 0; 
} 

2.2 位数分离

  1. 获取个位十位百位,从控制台输入一个三位数,分别获取个位,十位,百位。

    • 思考 如何使用 / 运算 和 % 运算总结有什么特点?
    #include <iostream>
    using namespace std;
    
    int main(){
    	/*
    		1.位数分离,如何分离个位十位百位 
    	*/
    	int num; //三位数的整数 
    	cout << "请输入一个数: " ;
    	cin >> num ;
    	
    	//如何获取一个数的个位,十位,百位. 789
    	int gewei = num % 10;  // 获取个位数 
    	cout << "个位数是:" << gewei << endl; 
    	
    	int shiwei =  num/10%10; //获取十位数 
    	cout << "十位数是:" << shiwei << endl;
    	
    	//推理怎么拿到百位数 
    	int baiwei = num/10/10;
    	cout << "百位数是:" << baiwei << endl;
    	return 0;  
    } 
    
  2. 如果一个 四位数怎么操作?

    • 根据上边案例得出一个原理。/ 运算 去掉一位,%运算获取个位
    #include <iostream> 
    using namespace std;
    
    int main(){
    	/*
    		1个4位数的操作
    			1234 
    	*/
    	int num; 
    	cout<< "请输入一个4位数: ";
    	cin>>num; 
    	
    	int gewei =  num%10;
    	cout<< "个位数" << gewei<<endl; 
    	
    	int shiwei =  num/10%10;
    	cout<< "十位数" << shiwei<<endl; 
    	
    	int baiwei =  num/10/10%10;
    	cout<< "百位数" << baiwei<<endl; 
    	
    	int qianwei =  num/10/10/10%10;
    	cout<< "千位数" << qianwei<<endl; 
    	return 0;
    } 
    

2.3 鸡兔同笼问题

  1. 已知 鸡和兔 的总数量为 n, 总腿数为m。

    • 输入m和n 求出鸡和兔子的数量。
  2. 思考方式:二元一次方程。

    #include <iostream>
    using namespace std;
    
    int main(){
    	/*
    		思路分析:需要使用二元一次方程 
    		鸡设为  chicken  兔子 设为 rabbit   
    	*/
    	int n ; //总数量 
    	int m ; //总腿数 
    	cout<< "请输入鸡和兔子的总数量: ";
    	cin >> n ; 
    	cout<< "请输入鸡和兔子的腿数: ";
    	cin >> m;
    	
    	// 将二元一次方程进行转换
    	
    	int chicken ; //鸡
    	int rabbit ; //兔子 
    	
    	rabbit = m/2-n;
    	chicken = n-rabbit; 
    	
    	cout << "小鸡有: " << chicken << endl; 
    	cout << "小兔子有: " << rabbit << endl; 
    	
    	return 0; 
    } 
    

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吴琼老师

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值