第三节 C++ 运算符

news2024/11/16 21:43:02

文章目录

  • 掌握知识点
    • 1. 运算符概述
      • 1.1 算术运算符
        • 1.1.1 加,减,乘,除
        • 1.1.2 自增,自减
        • 1.1.3 取模运算 %
      • 1.2 赋值运算符
      • 1.3 比较运算符
      • 1.4 逻辑运算符
  • 2. 编程题:运算符使用
    • 2.1 计算器
    • 2.2 位数分离
    • 2.3 鸡兔同笼问题

掌握知识点

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

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(){
    	int 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. 用于根据表达式 左右两边的的值,返回真或者假。
    • 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; 
    } 
    

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/807539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重学C++系列之智能指针简单介绍

一、什么是智能指针 在使用堆内存时&#xff0c;就像使用栈内存空间一样&#xff0c;可以实现自释放的功能&#xff0c;智能指针在C库中也是类模板之一。 二、智能指针有几种 有四种。auto_ptr, unique_ptr, shared_ptr, weak_ptr 其中后三个是C11支持&#xff0c;第一个已经被…

递归:一个图教学会递归原理

递归的特点 实际上&#xff0c;递归有两个显著的特征,终止条件和自身调用: 自身调用&#xff1a;原问题可以分解为子问题&#xff0c;子问题和原问题的求解方法是一致的&#xff0c;即都是调用自身的同一个函数。终止条件&#xff1a;递归必须有一个终止的条件&#xff0c;即不…

软考A计划-系统集成项目管理工程师-项目人力资源管理-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

百度与AI:历史、投资和监管

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 百度的人工智能在中国具有先发优势 随着ChatGPT的爆火&#xff0c;人工智能重新引起了投资者的注意&#xff0c;然而人工智能并不是突然爆火的&#xff0c;而是全球众多公司在人工智能技术上进行数十年如一日的研发和积累&a…

Vite创建Vue+TS项目引入文件路径报错

使用vite搭建vue3脚手架的时候&#xff0c;发现main.ts中引入App.vue编辑器会报错&#xff0c;但是不影响代码运行。 报错信息&#xff1a;TS2307: Cannot find module ‘./App.vue’ or its corresponding type declarations. 翻译过来是找不到模块或者相关的声明类型&#…

发现问题:edge浏览器的效率模式会导致setTimeout/setInterval变慢

问题描述 当edge浏览器启用效率模式后&#xff0c;setTimeout/setInterval运行一段时间后&#xff0c;执行间隔会变慢。 开启后&#xff1a; 关闭效率模式&#xff1a;

pspice导入元件Orcad spice模型

想要使用英飞凌一款驱动芯片&#xff0c;型号&#xff1a;1EDN7550U&#xff0c;在贸泽等各大网站上都没有找到改元件的spice仿真模型&#xff0c;经过一番摸索&#xff0c;终于找到了。 1、首先去芯片官网上查找该元件&#xff1b;找到该元件的spice模型 2、下载下来&#xff…

第十一章:deque类

系列文章目录 文章目录 系列文章目录前言deque的介绍deque的使用deque的缺陷deque的应用总结 前言 deque是一种双开口的“连续空间”的容器。 deque的介绍 deque(双端队列)&#xff1a;是一种双开口的"连续"空间的数据结构&#xff0c;双开口的含义是&#xff1a;可…

消息中间件RabbitMQ——学习笔记

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

前端文件上传实践与后端处理——文件分块上传

文件上传是现代Web应用程序中常见的功能之一。在这篇博客中&#xff0c;我们将探讨一个简单但完整的前端文件上传实践&#xff0c;同时提供一个后端示例&#xff0c;演示如何处理上传的文件。我们将使用JavaScript作为前端语言&#xff0c;并结合Node.js作为后端环境。让我们开…

Jekins权限管理,给不同用户分配不同项目的权限【一些小细节真要注意】

首先进入jekins的系统管理界面&#xff1a; 一、插件安装 如果没有安装权限管理的插件&#xff0c;需要安装一个插件&#xff0c;插件的名字叫Role-based Authorization Strategy&#xff0c;进入插件管理中&#xff0c;选中这个插件&#xff0c;点击下面的安装就好了&#x…

java-day01(基本常识,环境搭建,注释,HelloWorld)

一&#xff1a;基础常识 软件&#xff1a;按照特定顺序的计算机数据与指令的集合。可分为系统软件&#xff08;如操作系统&#xff09;和应用软件&#xff08;如QQ&#xff09; 人机交互方式&#xff1a;图形化界面&#xff08;GUI&#xff09;与命令行&#xff08;CLI&#…

阿里大佬都内卷的 SpringBoot 从入门到实战笔记,太硬核了!

前言 这份 SpringBoot 实战文档&#xff0c;结合典型业务场景&#xff0c;全面介绍基于 Spring Boot 的核心开发技术&#xff0c;整合开源组件&#xff0c;一步一步地搭建微服务框架&#xff0c;实现微服务治理&#xff0c;详解 60 多个示例、2 个综合项目案例&#xff0c;提高…

低代码管理系统源码:只需简单编写配置文件即可构建企业级应用程序

一套可视化建模&#xff0c;描述式编程的企业应用程序开发平台。只需简单的点击鼠标&#xff0c;几乎任何人都可以创建功能强大的企业应用程序&#xff0c;实现业务流程自动化。企业创建的应用程序可以部署在移动&#xff0c;平板电脑和Web上&#xff0c;创建的应用程序可以很简…

使用Pytest生成HTML测试报告

背景 最近开发有关业务场景的功能时&#xff0c;涉及的API接口比较多&#xff0c;需要自己模拟多个业务场景的自动化测试&#xff08;暂时不涉及性能测试&#xff09;&#xff0c;并且在每次测试完后能够生成一份测试报告。 考虑到日常使用Python自带的UnitTest&#xff0c;所…

TPlink云路由器界面端口映射设置方法?快解析内网穿透能实现吗?

有很多网友在问&#xff1a;TPlink路由器端口映射怎么设置&#xff1f;因为不懂端口映射的原理&#xff0c;所以无从下手&#xff0c;下面小编就给大家分享TPlink云路由器界面端口映射设置方法&#xff0c;帮助大家快速入门TP路由器端口映射设置方法。 1.登录路由器管理界面&a…

Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言&#x1f4ac; 一些调试的实例&#x1f4ad; 实例一&#x1f4fa; 调试演示 &#x1f4ad; 实…

24考研数据结构-第一章 绪论

数据结构 引用文章第一章&#xff1a;绪论1.0 数据结构在学什么1.1 数据结构的基本概念1.2 数据结构的三要素1.3 算法的基本概念1.4 算法的时间复杂度1.4.1 渐近时间复杂度1.4.2 常对幂指阶1.4.3 时间复杂度的计算1.4.4 最好与最坏时间复杂度 1.5 算法的空间复杂度1.5.1 空间复…

freeswitch的mod_xml_curl模块

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 随着fs服务的增多&#xff0c;每一台fs都需要在后台单独配置&#xff0c;耗时耗力&#xff0c;心力憔悴。 如果有一个集中管理配置的配置中心&#xff0c;统一管理所有fs的配置&#xff0c;并可以实现动态的修改配置就…

STUN工作原理

目录 一. 前言 二. STUN报文格式 STUN Header RFC3489 RFC5389 STUN Message Body RFC3489 RFC5389 三. WebRTC对STUN协议的支持 四. STUN工作流程 1. 使用STUN获取NAT映射后的地址 五. 参考资料 一. 前言 现实网络环境中绝大多数主机都是处于 NAT 之后&#xff0c…