C语言加减乘除运算

加减乘除是常见的数学运算,C语言当然支持,不过,C语言中的运算符号与数学中的略有不同,请见下表。

 加法减法乘法除法求余数(取余)
数学 -×÷
C语言 -*/%

C语言中的加号、减号与数学中的一样,乘号、除号不同;另外C语言还多了一个求余数的运算符,就是 %。

下面的代码演示了如何在C语言中进行加减乘除运算:

#include int main(){int a = 12;int b = 100;float c = 8.5;int m = a   b;float n = b * c;double p = a / c;int q = b % a;printf("m=%d, n=%f, p=%lf, q=%d\n", m, n, p, q);return 0;}

输出结果:
m=112, n=850.000000, p=1.411765, q=4

你也可以让数字直接参与运算:

#include int main(){int a = 12;int b = 100;float c = 8.9;int m = a - b;  // 变量参与运算int n = a   239;  // 有变量也有数字double p = 12.7 * 34.3;  // 数字直接参与运算printf("m=%d, n=%d, p=%lf\n", m, n, p);printf("m*2=%d, 6/3=%d, m*n=%ld\n", m*2, 6/3, m*n);return 0;}

输出结果:
m=-88, n=251, p=435.610000
m*2=-176, 6/3=2, m*n=-22088

对除法的说明

C语言中的除法运算有点奇怪,不同类型的除数和被除数会导致不同类型的运算结果:

  • 当除数和被除数都是整数时,运算结果也是整数;如果不能整除,那么就直接丢掉小数部分,只保留整数部分,这跟将小数赋值给整数类型是一个道理。

  • 一旦除数和被除数中有一个是小数,那么运算结果也是小数,并且是 double 类型的小数。


请看下面的代码:

#include int main(){int a = 100;int b = 12;float c = 12.0;double p = a / b;double q = a / c;printf("p=%lf, q=%lf\n", p, q);return 0;}

运行结果:
p=8.000000, q=8.333333

a 和 b 都是整数,a / b 的结果也是整数,所以赋值给 p 变量的也是一个整数,这个整数就是 8。

另外需要注意的一点是除数不能为 0,因为任何一个数字除以 0 都没有意义。

然而,编译器对这个错误一般无能为力,很多情况下,编译器在编译阶段根本无法计算出除数的值,不能进行有效预测,“除数为 0”这个错误只能等到程序运行后才能发现,而程序一旦在运行阶段出现任何错误,只能有一个结果,那就是崩溃,并被操作系统终止运行。

请看下面的代码:

#include int main(){int a, b;scanf("%d %d", &a, &b);  //从控制台读取数据并分别赋值给a和bprintf("result=%d\n", a / b);return 0;}
这段代码用到了一个新的函数,就是 scanf。scanf 和 printf 的功能相反,printf 用来输出数据,scanf 用来读取数据。此处,scanf 会从控制台读取两个整数,并分别赋值给 a 和 b。

程序开头定义了两个 int 类型的变量 a 和 b,程序运行后,从控制台读取用户输入的整数,并分别赋值给 a 和 b,这个时候才能知道 a 和 b 的具体值,才能知道除数 b 是不是 0。像这种情况,b 的值在程序运行期间会改变,跟用户输入的数据有关,编译器根本无法预测,所以就没法及时发现“除数为 0”这个错误。

对取余运算的说明

取余,也就是求余数,使用的运算符是 %。C语言中的取余运算只能针对整数,也就是说,% 的两边都必须是整数,不能出现小数,否则编译器会报错。

另外,余数可以是正数也可以是负数,由 % 左边的整数决定:

  • 如果 % 左边是正数,那么余数也是正数;

  • 如果 % 左边是负数,那么余数也是负数。


请看下面的例子:

#include int main(){printf("100%=%d \n100%%-12=%d \n-100%=%d \n-100%%-12=%d \n",100, 100%-12, -100, -100%-12);return 0;}

运行结果:
100=4
100%-12=4
-100=-4
-100%-12=-4 

在 printf 中,% 是格式控制符的开头,是一个特殊的字符,不能直接输出;要想输出 %,必须在它的前面再加一个 %,这个时候 % 就变成了普通的字符,而不是用来表示格式控制符了。

加减乘除运算的简写

有时候我们希望对一个变量进行某种运算,然后再把运算结果赋值给变量本身,请看下面的例子:

#include int main(){int a = 12;int b = 10;printf("a=%d\n", a);a = a   8;printf("a=%d\n", a);a = a * b;printf("a=%d\n", a);return 0;}

输出结果:
a=12
a=20
a=200

a = a 8相当于用原来 a 的值(也即12)加上 8,再把运算结果(也即20)赋值给 a,此时 a 的值就变成了 20。

a = a * b相当于用原来 a 的值(也即20)乘以 b 的值(也即10),再把运算结果(也即200)赋值给 a,此时 a 的值就变成了 200。

以上的操作,可以理解为对变量本身进行某种运算。

在C语言中,对变量本身进行运算可以有简写形式。假设用 # 来表示某种运算符,那么

a = a # b

可以简写为:

a #= b

# 表示 、-、*、/、% 中的任何一种运算符。

上例中a = a 8可以简写为a = 8a = a * b可以简写为a *= b

下面的简写形式也是正确的:

int a = 10, b = 20;a  = 10;  //相当于 a = a   10;a *= (b-10);  //相当于 a = a * (b-10);a -= (a 20);  //相当于 a = a - (a 20);

注意:a #= b 仅是一种简写形式,不会影响程序的执行效率。

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

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

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

相关文章

joo工作流_让我们用jOOλ在Java 8中流式传输地图

joo工作流我想找到一种简单的方法来用Java 8流式传输Map 。猜猜是什么&#xff1f; 没有&#xff01; 为了方便起见&#xff0c;我期望的是以下方法&#xff1a; public interface Map<K, V> {default Stream<Entry<K, V>> stream() {return entrySet().st…

python中递归函数写法_python递归函数用法详解

上期我们介绍了函数式编程&#xff0c;这期内容就是关于递归的函数内容&#xff0c;本期还是按照老规矩&#xff0c;给大家进行核心整理&#xff0c;内容通俗易懂&#xff0c;搭配实际应用&#xff0c;以供大家理解。 关于递归&#xff1a; 百度解释&#xff1a;是指函数/过程/…

计算机实践ps折扇,用PS打造一把水墨画折扇的教程

一、新建一个600 * 400像素的文件&#xff0c;背景填充为白色&#xff0c;新建一个图层按Alt Ctrl ’调出往格线&#xff0c;然后选择钢笔工具勾出下图所示的路径。二、按Ctrl Enter把路径转为选区&#xff0c;填充为40%灰&#xff0c;再新建一个图层&#xff0c;在下端点一…

输出 Hello World 混乱C语言的源代码

下面的六个程序片段主要完成这些事情&#xff1a;输出Hello, World混乱C语言的源代码下面的所有程序都可以在GCC下编译通过&#xff0c;只有最后一个需要动用C 的编译器g 才能编程通过。lns"http://www.w3.org/2000/svg" x"0px" y"0px" viewbox&…

电商常用同义词库_【福利】不可错过的电商设计神器,提高工作效率

开启高效设计&#xff0c;拒绝每天加班&#xff0c;设计助理插件&#xff0c;设计师高效设计神器&#xff0c;让你早下班的设计神器&#xff1b;今天介绍一款非常人性化的插件&#xff0c;尤其适合做电商设计的小伙伴设计助理插件官网视频介绍↓设计助理插件https://www.zhihu.…

hibernate乐观锁_Hibernate Collection乐观锁定

hibernate乐观锁介绍 Hibernate提供了一种乐观的锁定机制 &#xff0c;即使长时间通话也可以防止更新丢失 。 结合实体存储&#xff0c;跨越多个用户请求&#xff08;扩展的持久性上下文或分离的实体&#xff09;&#xff0c;Hibernate可以保证应用程序级的可重复读取 。 脏检…

turtle fillcolor_使Python中的turtle模块画图两只小羊

import turtle import time import math as m class Sheep(object):def __init__(self,xsize):self.t turtle.Turtle()self.xsize xsizet self.t# 画笔设置t.screen.screensize(canvwidth1000,canvheight500,bgwhite)t.pensize(2)t.speed(10)# t.hideturtle()#初始化画笔位置…

计算机鼠标介绍教学反思,《玩转鼠标》教学反思

《玩转鼠标》教学反思《玩转鼠标》是浙江摄影出版社出版的小学信息技术三年级第一单元中的第3课。这节课其实是上一节课的延伸&#xff0c;是一节复习课&#xff0c;起到巩固强化的目的&#xff0c;主要任务是让学生熟练掌握鼠标的基本操作方法&#xff0c;学会软件的打开和关闭…

openshift_在OpenShift上托管的WildFly实例上进行Arquillian测试

openshift技术提示&#xff03;54解释了如何为现有Java EE项目启用Arquillian。 在该技巧中&#xff0c;测试是针对本地安装的WildFly服务器运行的。 如果此WildFly实例在OpenShift上运行&#xff0c;那么同一个适配器也可以工作吗&#xff1f; 没有&#xff01; 因为与xlocal…

C语言实现魔方阵代码及解析

问题描述编写程序&#xff0c;实现如下表所示的5-魔方阵。172418152357141646132022101219213111825295-魔方阵问题分析所谓“n-魔方阵”&#xff0c;指的是使用1〜n2共n2个自然数排列成一个nn的方阵&#xff0c;其中n为奇数&#xff1b;该方阵的每行、每列及对角线元素之和都相…

600度近视眼恢复方法_近视孩子的家长看看:600度以上近视可致盲,不花钱恢复视力法...

现在孩子近视早已经不是什么新鲜事了&#xff0c;一个班级里面有3分之一的孩子都近视&#xff0c;数据显示&#xff1a;目前中国学生近视发病率接近60%&#xff0c;居世界首位&#xff01;中小学生近视率已达34.6%&#xff0c;高中近视率已达70%。患者人数超过六千万&#xff0…

xbox360 功率测试软件,【外星人 Alpha ASM100-1580 游戏主机使用总结】性能|电压|功耗|跑分_摘要频道_什么值得买...

外星人 Alpha ASM100-1580 游戏主机使用总结(性能|电压|功耗|跑分)在讨论性能之前&#xff0c;再最后看一看电源。NUC电源外置是必然&#xff0c;除了体积之外&#xff0c;还要考虑散热&#xff0c;所以&#xff0c;电源外置至少在目前来看还是最优解。这款电源是台达电子代工的…

openfire消息通知推送_微信小游戏内测「订阅消息」能力,这是召回用户的「大杀器」吗?...

作者&#xff1a;蒋鸿昌本文来源于「知晓程序」公众号。知晓云后端云服务&#xff0c;让你的小程序开发快人一步&#xff0c;添加「minsupport3」了解详情。知晓云​cloud.minapp.com一位投资人曾把最近 3 年微信公开课 Pro 版上张小龙的演讲称为「小程序 3 篇」&#xff1a;如…

api 数据gzip压缩_如何使用GZip和Jersey压缩Java REST API中的响应

api 数据gzip压缩在某些情况下&#xff0c;您的REST api会提供非常长的响应&#xff0c;我们都知道移动设备/网络上的传输速度和带宽仍然非常重要。 我认为这是开发支持移动应用程序的REST api时需要解决的第一个性能优化点。 你猜怎么了&#xff1f; 因为响应是文本&#xff0…

c语言心形告白代码实现

1.彩色告白includeincludeincludeincludedefine U 0.1define V 0.053void SetColor(unsigned short ForeColor,unsigned short BackGroundColor){HANDLE hConGetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hCon,(ForeColor)|(BackGroundColor16));}int main(){int …

obs可以推到中转服务器吗,能否使用OBS(Open Broadcaster Software)、FMLE(Flash Media Live Encoder)等第三方软件进行推流?...

"可以。请参考以下方法进行设置。使用OBS进行直播设置 > 串流 > 串流类型&#xff1a;自定义流媒体服务器URL&#xff1a;填写网易服务器提供的推流地址中&#xff0c;从头到live的部分&#xff0c;例如&#xff1a;rtmp://p12345678.live.126.net/live流密钥&#…

mysql 隐藏中间四位_MySQL知识体系——索引

本文直切主题&#xff0c;针对InnoDB引擎描述索引及优化策略。在开始之前&#xff0c;需要读者了解&#xff1a;二叉查找树(包括2-3查找树、红黑树等数据结构)MySQL的InnoDB引擎基础知识索引初探要了解索引&#xff0c;当然要了解其数据结构。树有很多应用&#xff0c;流行的用…

python中属于私有属性的是_Python中的实例属性和私有属性

相关知识点 实例属性 实例属性和类属性的区别在于实例属性定义在类的__init__()魔法方法中&#xff0c;而类属性定义在类下&#xff1a; 1 classC:2 b 1 #类属性 3 4 def __init__(self):5 self.x None #实例属性 对于类属性这里不做说明&#xff0c;主要描述实例属性&#x…

osgi cxf_所有OSGi套件的通用CXF请求拦截器

osgi cxf几个月以来&#xff0c;我一直在研究Apache CXF&#xff0c;Karaf和Felix&#xff0c;我发现所有这些捆绑技术都非常有趣。 在处理一些用例时&#xff0c;我陷入一种情况&#xff0c;即我只需要一个Interceptor即可在发送到Karaf应用程序下部署的任何捆绑包的每个HTTP请…

听说,高手都用记事本写C语言代码?

坊间传闻高手都喜欢用记事本写代码&#xff0c;那么问题来了&#xff0c;我们以C语言为例&#xff0c;如何用记事本编译运行呢&#xff1f;其实&#xff0c;最简单的方式就是安装GCC编译器&#xff0c;在记事本编写C语言程序&#xff0c;然后再在命令行用GCC编译运行。下面&…