00:01
我们先来看算术运算符,算术运算符,那算术运算符我们先做一个基本介绍,什么是算术运算符呢?就是对数值型的这种变量进行运算的,那算术运算符在我们C程序中其实使用的是非常多的,你比如说加减乘除去模加,加减减对不对?所以算术运算算符呢,它非常重要,我们来看一下。在C语言里面,大家首先看这张图。算数运算符的一览表有这么多加,前面写个加,写个减是吧?有正正号负号,加减乘除取模,取模就是取余数的意思,比如说七模五等于几呢?等于二。因为七除以五过后,余数不是为二吗?还有加加,加加呢,又分为前加加和后加加,后面我们想讲。前减也是一样的道理,分为前减减和后减减,具体有什么区别,我们在后面举例说明,这是它的一览图,大家心里面要有一个基本的认识,紧接着我们往下面看。
01:09
那现在呢,我们就来具体的用案例给各位同学演示一下算术运算符使用的一些特点,那前面那么多算术运算符呢,我们没有必要每一个都讲一遍,这里呢,我重点讲的是除法。还有一个取模加加,为什么重点讲这三个呢?因为加减乘这些对于我们来说几乎没有难度啊,没哪个同学都知道。但是呢,除取模加加这个有些不一样的地方,还有一点我说一下啊,减加加减完了,减减自然也就会了,明白吧,所以减减我就不用讲,因为你可以按照加加这个方法来推就可以,现在呢。我们来举例说明。打开我们的VS。
02:00
2010现在我们新建。一个文件夹新建一个文件夹。CHAPTER05第五章好。首先我们把前面这。这个先注销,我们接着写。我们先写第一个小案例,这是我们运算符的一个操作,运算符的一个案例。Operator。运算符超运算符的DEMO01,这是算术运算符是吧?算术运算符我们写个areme。Arerimetic arithmetic,这是算数的意思,Arerithme,然后DEMO这样区别一下。好,我我呢在这里,嗯,添加吧。我们首先把它的后缀名改成C。然后我们先引入一下头文件include。Include。Std。
03:00
L。那现在呢,我们写一个void。主函数。我们开始举例,呃呃,我们来一个个看吧,首先呢,我们先举给大家举一个除法,因为加减乘这个我就不举了,特别简单,只是除法需要同学们注意一下,我们先看一个案例,同学们看这样一个案例,大家来看这个结果等于多少double。比如现在呢,我有个double。这个double呢是第一等于十除以四。大家认为这个结果是多少?呃,一般的人会认为是,大家可能会认为是这样子,十除以四呢,十除以四,大家会认为应该是二点,呃,应该是2.5。对吧,但实际上我要告诉大家,因为你这个十除以四呢,十它是一个整数,四也是一个整数,因此它保这个。十除以四的结果呢,其实它会把这个五砍掉。
04:04
0.5砍掉,所以最后这个结果其实是二,它本身是这样子啊,我说一下的他的处理的处理的流程,注意听,这点事同学们要小心的。处理的一个流程分析它本身十除以四呢,十除以四。它的确是等于2.5,但是因为你在这个执行过程中,十除以四都是整数,所以说它会把0.5截断。他会干什么呢?他会截取。截取整数。减去整数,于是就得到了一个二,但是同学们看到这个二是个整数,但是它要把这个二呢覆盖一个double,因此呢,它会在后面加上这个小数点。最后就变成2.2.0什么什么什么111个位数了哈,所以说这个最后这个结果输出来应该是2.000多少。那主要是看你输出的时候保留小数点多少位,我输出一下看一下。
05:04
那同学们演示一下,第一等于百分号D啊,百分号第二。F吧,我们就默认的方式来输出第一,那为了看到效果呢,我们给它恰一下,那各位同学我们运行一下。我们看这个结果跟我们想的是否一样,应该是二点,后面应该是六个零。123456没问题,那有些同学说了,说老师那如果说我就想保留小数点怎么办呢?那应该这么写,Double第二等于十除以还是十除以四。如果,如果希望保留小数,那你参与运算的,注意听这句话,参与运算的数必须。必须有小数。必须有浮点数吧,浮点数也就是说你这地方要么10.0,你整一个点,要么你是整一个点都可以。
06:03
那一般呢,我们把这个十改成10.0就可以了,这时同学们再输出第二。等于FF,我们仍然输出一下,同学们注意看,此时此刻,这个第二呢,就应该是2.5。呃,看你的保留小数点了啊,你是默认默认六位呢,那就应该是,那就应该是2.500000,对不对,好,我这个就给大家运行一下,同学们看效果就行了。咱们看这个运算效果跟我们想的是否一样。是不是保留小数点呢?因此,这个地方是同学们在使用C语言编程的时候,或者是在答题的时候一定要特别小心的地方。明白了。好,紧接着呢,我们继续往下讲,讲完这个除我们就来讲取模,取模呢,我们这里有几个案例,大家看一下。好了,我给大家演示一下曲模,我们分别演示哈,来,同学们看一下这个结果吧,我在上面写。
07:06
在上面写,比如说我现在有一个十模三,我们看这个等于多少,我们这样子直接在输就行了。他肯定是个整数嘛,对不对,呃,要不用一个结果接收一下,因为因为取模了过后肯定是个整数,咱们按这个取就行了,或这样这样写就行。啊,十模三,十模三,诶这个还不行,有百分号,那这样写吧。嗯,Int res1等于十模三,这个等于多少呢?其实这个呢,就等于十除以三的余数,就是求求十。除以三的这个余数。是不是这个意思啊?求余数。那你这样求余数,当然这个学过小学的同学都知道,十除以三肯定余数为一嘛,我们输出来看一下。
08:02
21。Re,一等于百方D、我们在这里输出R1运行一把同学们。这时应该。211应该等于一没有问题,好,其他我以此类推,同学们看一下,我复制一份。那现在假如说我又得到一个结果是十。干什么呢?我这边取个负数,大家觉得应该是等于多少啊。大家觉得这个负十去魔山等于多少?小心面试官,或者说我们在答题的时候呢,可能会问到,可能会问到各位同学想想是啥。过多月想想是啥?复试OK,现在呢,我要给大家一个公式,这个时候你可能感觉有点。不太明确了,对不对,我给大家一个公式。给大家一个曲魔。取模的一个公式怎么说呢?比如说A模B,其实它等于A减去A除以B乘以B。
09:11
你按这个来套就没有任何问题,也就是说A模B,其实它在计算机运行的过程中,它是按照这个规则或者说这个公式来进行运行的,就是A减去A除以B,再乘以B,明白吗?那如果我按这个来推导的话,大家看这个应该等于多少,是不是它就应该等于前面一个负十。干什么呢?减掉负十。但这个应该要括起来,它是一个整体。负十除以三。是不是除以三呢?乘以三再乘以三。这个等于多少呢?等于负十。减去大象。负十除以三显然等于负一了,这个你猜一猜的出来,负一再乘以三是不是等于负三?
10:00
那也就相当于减掉一个负三,减去一个负三是不是加三。减减,它其实是减一个负三。但是我们学小学的时候就知道,减去一个负数,其实等价于加一个正数,那就是负十加三啊,不是啊不是啊,这边还忘了乘了。哦,对不起啊,这个地方是负三,负三还要乘以一个三呢,忘了。那大家想,负三乘以三是不是等于负九了?负三乘以三等于负九嘛,负九那就说减去一个负九,减去一个负九相当于加上。一个九。这个等于多少呢?等于负一,我们看这个结果对不对哈。同学们看一下RES2等于。百方地,然后呢,我在这里。把二一十二输出给你们看一下,同样这边少了一个分号,所以说他报错。那我们运行一下,我们可以看到RES2呢,应该就等于负一。
11:03
是不是等于负一?的确负等于负一,那我再给大家出几个例子,你们看看分别等于什么?23。如果我这样写。这个等于多少?是不是也按刚才的推导一下就可以了,那我们推一推啊,十减去。一个十除以。负三。是不是负三再乘以一个负三。这个结果是不是一下就看出来了,是等于多少?同学们看。相当于是十除以,这个先算它嘛,十除以负三,那显然。想到这个地方,这个结果。等于多少啊,是不是还是负三求整数了,因为它是保留整数部分吗?我们刚才已经讲讲过一遍了吗?说这个等该等于负三,负三去乘以一个负三等于。正九,那就是十减九了。十减90减九等于多少?等于一是不是等于一呢?我们看一下。
12:05
那就是R10300分号D。看一下啊。走起来。二月13我们看看是不是等于一运行。关闭一下运行。好不着急啊,同学们。那这个我们看看结果我们想的是否一样呢?的确是等于正一,那我再问同学们一个问题,再问同学们一个问题,如果我又有一个计算是负十。OK,请同学们想,这个时候结果等于多少?负十磨上负十是不是一样,按照这个推导就行了,同学们自己去推一下好不好,自己去推一下,这个没有没有难度,我给告诉大家个结果,这个结果呢,应该等于负一啊,为什么等于负一自己推,按照刚才这个公式自己推导一下就可以了,我们也把它打过来,2S4等于保定。然后在这里呢,我们输出R14,我们运行一下,先把这个关闭再运行。
13:05
那么运行过后呢,我们发现这个结果呢,应该就等于负一,是不是原因,我就刚才已经讲过了,自己推下好,紧接着我们再来看下一个就是加加这个东西,注意我把加加讲完了,减减是一个道理,我就不会再讲了。明白这个意思吧,大家应该是有一点自己可以推导出来的,佳佳和简简是一样的,只是只是它的格式呢,我们说一下就行。那给大家演示一下加加的,加加的这个使用。那么加加有两种用法,我们分别举例,比如说我先定义一个I等于。等于。五八好,我看这边我举的例子用的是几。用的是十,好,那就用十,咱们用十就行了。十大家看我的案例,我可能这边写的跟幻灯片的案例不太一样,大家注意听就行了。我来一个解。皆等于A加加。
14:02
R加加K等于加加I。我先问同学们一个问题。我我先把这个注销,我先问同学们一个问题啊,这个地方我们在下面在在上面再打一下PF。写个恩,为了好看,我们都来一个换行,我先问同学们一个问题,这个解,这个我们说完了一个,这个I等于多少?哈,I等于百方D。解等于百分D,然后呢,我分别输出I和解,请同学们回答。此时此刻,这个I等于多少?解等于多少?我们来一步步推导,首先我告诉大家,前面I付了一个十,这个是没问题,关键是看这个加加I是怎么回事。其实这句话呢,他等我给你写成两句话,你们一下就明白了,就是就是你们看到的。
15:00
I加加付给这个结呢,它的这一个等价的操作是这样子的,它底层是这样做的,他先。执行这句话。也就是说,先把I的这个值呢赋给这个解,明白这意思吧,然后再执行I等于I加一,大家明白什么意思了吗?能知道什么意,这个结果大家知道什么意思了,是不是先把I给到这个解。那显然这个结呢?显然就是十,所以说这方说出来解还是等于十的,但是同学们看I是不是自己增加了一下。因此这个I呢,它其实是等于11的,能理解吗?并不难,对不对,就说这是谁谁规定的呢?这就是我们计算机他事先已经规定好的,并不是韩老师说,哎,他这样执行,这是规定好的一个规则,也就是他的运算的规则是这样子的。
16:00
运算规则这样子理解了,那我们来看看是不是这样子的呢,运行。当我们运行过后呢,我们发现这个结果跟我们想的应该是一样的,大家看你I等于11解等于十,是不是老师分析的一模一样。那我再把这个打开。这次呢,我把这个加加写在了。前边。我把这个加加写在了前边,那大家想这个地方又要告诉大家运算规则了,注意听哈,运算规则等价什么呢?这个就等于它先自增,就是I自己先加一下。然后注意这个顺序,然后再把这一个I的值赋给这个K,那大家看到这两者的区别在什么地方?如果你是加加在后面,它是先赋值再自增,如果你的加加在前面,它是先自增再赋值,看到区别了吗?
17:03
认真观察,那如果这样的话,我想请同学们再思考,如果我在这里再说出对听。如果再输出I。对于摆泡地。K等于百分D。那么I。K,我想请问此时此刻I等于多少?而我们的K又等于多少?同学们分析一下。我先请同学们思考哈。这句话。他会先执行I加一。那么刚才老师已经讲过。在上面这句话执行完毕以后,其实I它已然等于了11,这个能理解吧,因为你上面这句话是要执行的吗?那就说I呢,其实已经等于C了,相当于说你把这个I呢先自增。那显然。11加一傻子都知道等于多少,是不是等于12了?
18:02
那同时他再把这个12付给这个K,所以12呢也是12,而K也等于12,这个能理解不?其实没有什么难度,如果你这个绕不过来,说不过去对不对,很简单的,也就是说你这句话的执行呢,一个你要考虑到它的执行的规则,第二个你还考虑到I呢,其实已经不再是十了,因为它已经在上面这一步变成了11,所以这样一个推导过程。好不好,我们运行一下,看看老师分析的是否正确,来,我们运行这段代码就一目而了然了。一目了然,走起来。我们看这个结果,诶你看。I等于12 K也等于12。对不对,I等于12等于K12,那大家看到因为你在,因为你这个地方注意听这句话,大家说诶老师这个有点不一样了,这为什么这个I变成12了呢?大家知道为什么吗?
19:00
因为你是先把这个过程都执行完了,你才输出的,如果你要按照按按照原先那个规则来说,其实你应该是把。这句话。提到前面去明白这意思了吧,因为你相当于说你是你是把这个处理完了,我再去玩下面这个案例的吗?但是如果说如果说你还在这个地方保持不变,保持不变,那这个地方肯定输出的是12楼。能绕过来吗?同学们能绕过来,那我如果你绕不过来,我再给你分析一下啊,我再给你分析一下,来走一走。首先第一步这样做。运算规则是这样子的,所以说这个规则完了过后,这个完了过,我们可以推出来是什么结果呀,我们可以推出来此时此刻结。结,因为结首先是I给了他节应该等于十,这个是没有问题的。I加加,因为你你你后面这个I还是要支撑一下吗?所以说I呢,其实在这一步执行完了,已经变成11了,能理解不?然后下面呢,又执行这句话,这个规则是I等于I加一,也就是说下面这句话第20行这句执行完完毕过后呢,I其实已经是在原先这个基础上又加了个一,所以说I已经变成12了,这个这个能理解不?然后K呢,等于I付给它,当然也等于12。
20:28
所以说如果你像这样这样来,你把两句话都执行完毕以后再输出,那显然这个I。他就是12嘛。因为它增加了在12,然后这边结呢,因为你负了值十没有动过,就是十,下面这个I呢,那你再输出它还是12啊,因为你在这这个输出过程中,你没有对它进行变化,K呢,还是12,所以说这个结果呢,就应该是呃,十二十,十二十二,明白了吧,注意这个过程哈,同学们,那关于这个地方的讲解就说完,还有地方我要再多说一句,再多说一句同学们。
21:06
还有一个什么做法呢?注意看,还有一种像这种写法K加加。加加K。呃,就说我们这个加加呢,还可以独立的使用,我在这里啊加加或者。或者减减还可以,还可以独立使用。独立使用注意听这句话,独立使用就是我不会把这个结运算的结果赋给另外一个值,我直接K加,加这个就相当于自增。就相当于一只,就相当。相当于自尊。自己自尊。自增就是增一,那这个时候呢,我跟大家说说明一下,那这个K加加。K加加它等价于什么呢?它等价等价于K等于K加一。
22:01
明白吧,那有些同学说老师,那如果加加K呢,加加K也等价于这个K等于K加一,那也就是说在它独立使用的时候,其实你。独立使用的时候,就是它这个值不付给别人,那么你K加加和加加K是完全等价的。再说一遍啊,在独立使用的时候,K加加和加加K是完全一样的,即最后这个结论是。如果独立使用。独立使用。那么加加K和。K加加完全一样。完全一样的就完全等价,完全等价因因为你原先这个地方有个赋值,现在没有赋值了,那就反正做完了过后自己增加一下,那我问大家一个问题。问大家一个问题,如果我这样再把这个K输出一下,请同学们回答老师,请同学们回答老师,此时时刻这个K等于多少?
23:01
K等于多少?能回答出来吗?那你首先要考虑,现在K已经变成多少了?K是不是等于12?是不是在前面已经K等于12,那你这方增增加一下自增以后,这个K已经变成13了,能理解不?然后呢,再增加一下K就变成14了。那最后这个地方显然等于14能理解,我们运行一下,看看老师的分析是否正确。不要小看这些地方哈,面试官或者说我们做题的时候经常遇到。K的确等于40,没有任何问题,好同学们,那关于我们这一个算术运算符的这么前面的这一部分内容就是案例算术运算法的一个案例的讲解,我们就给大家分析到这里,大家要认真的去体会哈,好好的理解理解,后面我们还有练习的,好关于这一讲,我们就给大家说到这里。
我来说两句