(三十九)运算符

简介:

c++的运算,具体是2个操作数,加一个运算符。例如3+4,3和4是操作数,+是运算符。

加法运算:+  如1+2,结果是3

减法运算:-  如3-1,结果是2

乘法运算:*  如3*4,结果是12

除法运算:/  如4/2,结果是2。若前后2个数都为整数,则取结果的整数部分(不四舍五入)。

求模运算:%  如7%4,结果是3。

 

 

求模的意思是,求第一个数除以第二个数之后的余数。例如7/4=1余3,所以结果是3,而5/2的结果是2余1,所以5%2输出为1。

另外,求模的两个操作数都必须是整型(即整数,但不一定为正),如果是浮点数(即小数,则会报错)。

求模比如是a%b,若其中有一个为负数,则a%b=a-(a/b)*b

即,若a正b负,则a%b为正,若a负b正,则a%b为负。即a%b的正负跟a相关。大小为a%b(假设a、b都为正数时的余数),然后前面加上a的正负符号。

例如  -9%4=-1  ;而  9%-4=1。

 

关于除法:

假如a/b其中a或者b中至少有一个浮点数(即小数),那么a/b则保留小数,结果为浮点数。如果没有浮点数,则结果为整数(舍去小数部分)。例如7/6的结果是1,而不是四舍五入后的2。

注意:7/6的结果是1,但是7.0/5的结果却是1.16667(共6位)

 

关于计算时的优先级:

类似数学算式,先乘除后加减,例如2*3+3的结果是6+3=9,而非2*6=12。

但是如果同时牵扯到乘除或者求模(求余数),最好加上括号,以防出错。例如:3/6*4这种事情应该尽量避免,应写成(3/6)*4。

至于具体的,有C++的运算符优先级的说明,以及 综合性方面的信息。总之,为了避免麻烦,还是尽量加扩哈以免出错吧。

 

上代码:


//运算符演示
#include <iostream>

int main()
{
	using namespace std;
	int a = 5, b = 3, d = -3, e = -5;
	double c = 3.0;
	cout << "已知a=5,b=3,c=3.0,d=-3,e=-5,现就各个运算符进行演示" << endl;
	cout << "a+b= " << a + b << endl;
	cout << "a-b= " << a - b << endl;
	cout << "a*b= " << a*b << endl;
	cout << "a/b= " << a / b << "   ←左边是整型的除法" << endl;
	cout << "a/c= " << a / c << "   ←左边是包含一个浮点数的除法,注意,结果也是浮点数" << endl;
	cout << "a%b= " << a%b << "   ←左边是5%3的求模" << endl;
	cout << "a%d= " << a%d << "   ←左边是5%-3的求模" << endl;
	cout << "e%b= " << e%b << "   ←左边是-5%3的求模" << endl;
	cout << endl;
	cout.setf(ios_base::fixed, ios_base::floatfield);	//貌似是强制显示小数点后6位,可以用于确认精确度
	cout << "以下是不同的除法,注意,f结尾的为float类型浮点数,L结尾为long类型浮点数,只有小数点的为double类型浮点数,而无小数点的为int类型的整型\n";
	cout << "8/3= " << 8 / 3 << "   ←为整型之间的除法" << endl;
	cout << "8.0/3.0*1e6= " << 8.0 / 3.0*1e6 << "   ←为double类型的除法" << endl;
	cout << "8.0f/3.0f*1e6= " << 8.0f / 3.0f*1e6 << "   ←为float类型的除法" << endl;
	cout << "8.0L/3.0L*1e6= " << 8.0L / 3.0L*1e6 << "   ←为long double类型的除法" << endl;
	system("pause");
	return 0;
}

输出内容为:

已知a=5,b=3,c=3.0,d=-3,e=-5,现就各个运算符进行演示
a+b= 8
a-b= 2
a*b= 15
a/b= 1   ←左边是整型的除法
a/c= 1.66667   ←左边是包含一个浮点数的除法,注意,结果也是浮点数
a%b= 2   ←左边是5%3的求模
a%d= 2   ←左边是5%-3的求模
e%b= -2   ←左边是-5%3的求模

以下是不同的除法,注意,f结尾的为float类型浮点数,L结尾为long类型浮点数,只有小
数点的为double类型浮点数,而无小数点的为int类型的整型
8/3= 2   ←为整型之间的除法
8.0/3.0*1e6= 2666666.666667   ←为double类型的除法
8.0f/3.0f*1e6= 2666666.746140   ←为float类型的除法
8.0L/3.0L*1e6= 2666666.666667   ←为long double类型的除法
请按任意键继续. . .


目录
相关文章
|
9月前
|
存储 算法 编译器
【C++ 函数尾部返回】C++中的尾返回类型:探究auto func() -> ReturnType的魔力
【C++ 函数尾部返回】C++中的尾返回类型:探究auto func() -> ReturnType的魔力
287 1
|
小程序 JavaScript
微信小程序——计算器案例
微信小程序——计算器案例
761 0
|
数据可视化 物联网 数据挖掘
物联网云平台介绍和IOT Studio介绍(二) | 学习笔记
快速学习物联网云平台介绍和IOT Studio介绍(二)
物联网云平台介绍和IOT Studio介绍(二) | 学习笔记
|
API
云市场资源包额度预警设置及使用明细查询操作指导
阿里云云市场是软件交易及交付平台。云市场致力于为中小型企业提供全方面的 IT 服务,大幅降低企业互联网化成本, 打造企业上云、产品选购、服务落地、交易一体化流程。共同构建云上生态,让信息化更简单。作为阿里云的战略发展点,承接着中国云生态各个链条产品的落地。云市场平台提供完备的服务监管来保障用户利益,并把更多的产品、品牌及销售资源赋能商家。客户在购买使用云市场服务后为了避免当资源包耗尽时,面临服务不可用风险。通常有设置资源包额度预警和查看使用明细得需求。但是由于云市场控制台的不熟悉,往往不知如果进行额度预警的调整及设置。本文简单介绍设置资源包额度预警和查看资源包用量明细操作步骤,以供参考
623 0
云市场资源包额度预警设置及使用明细查询操作指导
|
前端开发
脑洞大开:如何使用CSS实现自定义圆角虚线框
在CSS中,我们常用`border`来表示一个元素的边框样式,也可以使用`border`来绘制简单的分割线。最近遇到一个项目,需要用虚线来显示元素的边框。初步一看,这不很简单嘛,一行代码搞定`border: 1px dashed #ccc`。自我感觉良好,结果UI的同事直接提刀来了,“这是我想要的效果吗,我要的是……”。没办法,还是老老实实想办法解决自定义的虚线边框。
1023 1
脑洞大开:如何使用CSS实现自定义圆角虚线框
|
小程序 前端开发 开发者
钉钉工作台的体验优化及技术思考
业务发展初期,往往是业务单引擎驱动,功能要求快速上线来追求规模化扩张,常会忽视用户体验。但数据证明,重视体验的企业发展速度远超行业平均水平。开放平台用户端产品活跃用户数超3千万,用户端的变化将直接影响千万级用户的使用体验及对钉钉的满意度。为此,我们设置了用户端体验专项。本文主要介绍本次体验优化专项的特点,产品能力体验升级背后的技术思考,以及技术视角优化的关键策略和结果。体验优化专项特点本次体验优化
1091 0
钉钉工作台的体验优化及技术思考
|
自然语言处理 人机交互 语音技术
阿里云智能语音交互中录音文件识别服务的简单使用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,识别是针对已经录制完成的录音文件,进行离线识别的服务。录音文件识别是非实时的,识别的文件需要提交基于HTTP可访问的URL地址,不支持提交本地文件。此篇文章简单介绍下javasdk的调用
964 0
阿里云智能语音交互中录音文件识别服务的简单使用
|
SQL 存储 算法
MySQL 死锁是怎么产生的?6 个案例分享!
Mysql 锁类型和加锁分析 MySQL有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度
265 0
MySQL 死锁是怎么产生的?6 个案例分享!
|
设计模式 存储 缓存
服务器架构设计大全及其优缺点概述
服务器架构设计大全及其优缺点概述
465 0

热门文章

最新文章