00:00
但在这里边呢,我们没有把这个叉放进来,这就涉及到一个叉的问题是吧,嗯,差往哪放呀。感觉上这个叉呢,你要从容量上来讲,它好像也占两个字节,感觉跟它应该像是并列的一样,是吧,就是要放,你是不是想想想这样的放一下。对吧,哎,想想这样房,那我们先来说一下这个叉的问题哈,差的话呢,我们看这个事情,哎,现这呢,我们打一条线哈,上面是刚才说的一个基本的情况了,下面我们说一下串,首先呢,先明确一点,这个串呢是可以做运算的,比如说我这来个小A,然后呢,我让这个呃C1咱们加上一个,呃,上面这是一个I1,我这再定义一个吧,呃,In的形的一个I2也有了,I3没有啊十。我现在让这个C1呢,加上这个S3,再问你说这个结果什么类型,哎,就是最小是什么类型,哎,对,最小呢,只能是in特了,你要比int再小写成个差,那他成不下是吧?哎,这个我们得写成个int啊,当然你要写比in大的是不是更可以啊,写long float double是不是更小?
01:21
对啊,最小呢,你得写个in特看下结果保存编译运行,哎107啊,这是107了,那你减去这个十,其实这个小A呢,诶它是不是就是97啊,哎,对的啊,行,那至少呢,说明一点,就是这个差型跟我们int做运算呢,这个结果呢得是int了,那它要放的话呢,一定是不是往这边放啊,那这边呢就涉及到问题,那你说我要是是把这个放这儿,是这么着啊是这么着呢,还是说是放到少的后边呢,还是说他俩呢,就算是并列的关系呢,这是一个我们需要讨论的情况是吧,你要是他要是并列的方面就得是相当又拉出一条线来了啊就是后边这块呢,咱们基本上能够捋顺哈,现在就是前边这块呢,现在有一些疑问了,这个差。
02:21
跟这个short到底是这种并列关系,还是说它们之间做运算是可以怎么着,那下边咱们来测试啊,这呢是有一个char型,咱们现在呢,我定一个short型,哎,我叫S2,这个我让它也是一个十,那问我现在这个C1加上S2,看看它这个类型应该变成什么,那咱们就想呗,你试试呗,先试一个刷刷保存测试编译挂了。这个41行,41行说不兼容的类型从int转换到short,错了。
03:01
其实这块这不已经说明了吗?这个结果是不是应该得是一个int吧?嗯,得是个int啊,呃,那你要是你还不死心,那你再拿个叉试一下,哎,我保存了啊,再编译一下,你看我写成个叉就行,也是报这个问题,哎,那说明呢,就是我们这个short跟差,它两个类型要做运算的话呢,结果是一个int,那这个就不好写了,就是说他俩要做运算,结果既不是short也不是差。对吧,嗯,再来测测,我们再统一的往上面去改啊,那你说我这现在有个BAT,比如说啊,But我这个叫B2了,咱们这个变量不能出名,所以呢,我上面就看看我这有没有出名的啊,这个B2的话呢,我这叫十,那你说我现在这个C1啊,加上这个B2,这这这个你说是什么类型,对你看我这个差两个字节be呢,一个字节,按说好像应该是不是一个差,哎,我们这样写的,然后这个呢,咱们刚才不是编译不通过吗?来把它注释一下啊好,这个呢,感觉叉应该OK,那我们测试一下。
04:30
编译那又挂了44行,哎说呢,你看还是个印的,诶这就有点奇怪了啊这里,哎你看对你看我们这里边,我这是一个差,这是一个BAT这个运算结果呢,他说用差其收也不行,哎,那这呢,我们就通过刚才这样的一个简单的一个测试,我把这个结论呢抛出来,然后呢,咱们可以再来进一步的测啊这个结论是什么呢?哎,我把这个呢删掉,这个呢不能用箭头了,这个呢得用顿号。
05:08
啊语串呢,你写这也可以,哎这是顿号,就是说后边这没问题啊,就是说呢,我们这三个变量,它们相互之间要是做运算的话,对结果呢,都得是in得形,哎这就我们这个结论,刚才咱们不是让差跟short,所以上是int badt跟差也是int,那short跟short跟badt,其实结果你会发现也是int,哎我们先把这个结论呢说明一下啊,这个呢,属于一个叫特别的,哎就是哎对它呢得是一个补充哈,哎在它的基础之上,我们说特别的说当BAT char,哎还有我们这个叫shortt这个三种类型的这个变量做运算时做烧奶它了是吧,这三种类型的变量呢,做运算时呢,这个。
06:09
结果为,哎int类型,哎结果呢为int类型,你看我们刚才呢,不是没有错的,这个没错啊,这有一个B1B2,咱们让他加上一个S2 B2加上S2,哎按说呢,好像说少少按说该可以的是吧,但是你测试一下编译看47号还是说不行。哎,所以这个呢,就是不可以的啊,就是至少呢,你得拿一个int去接受,好不光如此,不光如此,什么叫不光如此呢?我上面呢,你看咱们定义过一个BE1哈,就它呗,BE1呢是一个bad形,然后呢,我再加上一个B2啊,B2也是个bad型,BAT加BA,你说应该什么?对哎,我们说它们三者之间做运算,其中也包括对同种类型的之间做运算也是一样的啊哎,Bet加T呢,如果你要是拿bet,哪怕说你拿上的你可以试试都不靠谱,变译看又错了。
07:28
哎,49行,哎这个呢,只能是也是拿int型来接收啊,那这块这边也说了int型好,这个呢,我们也得注释一下,好哎通过咱们刚才的哎这样的一组啊,这样我再打一条线,哎通过中间的这一块呢,我们想说明的问题就是基于上面这样一个规则的一些特殊情况,哎这个我们叫特别的对吧?哎特别的哎就是说明这三种类型做运算的时候呢,结果都得是因得行,哎这个大家要注意一下啊。
08:08
嗯,有的时候呢,我们学这个知识就学完以后呢,也总会去想说他为什么要这样去规定。嗯,你觉得他为什么要这样去考虑啊。哎,你看你要说上边这种啊,容量小的跟容量大的粗运算结果是容量大的,其实这个呢,我们认为是这很正常是吧,很正常你应该用容量大的去接收啊,但是呢,我们一个bad跟一个short做运算,感觉上应该就应该用short了接收了是吧,但是它还要求说你必须得用int接收,为啥呀?呃,这个呢,我找了一些资料,也没有见到明确说这个结论的啊啊那你就可以就把它当成是一个规定是吧?啊就是一般的这个上大学的时候呢,也有一些老师哈,就是呃,其实有一些东西呢,是可以说说明什么原因呢,那你得解释很多啊,包括这个像高中的话,大家其实写那种证明题,有时候有一个特别好使的东西,叫做显而易见,对你这个东西,你说不清楚了,你就这个显而易见,然后哎就直接用就行了是吧,啊或者就干脆规定啊,规定就是这样说的是吧,诶这个呢,找一找这个确实也没有找到说一个合理的解释。
09:22
是哈,然后我自己想了一个解释,呃,牵强不牵强啊,也算是一个想法,什么呢?就是咱们平时用的这个整形变量啊,就是印的型,基本上能够都够我们需求,就是它的容量其实很大了哈,但是咱们要是定义这个bad short或者是差型的时候,实际上你定义完以后呢,经常会出现这个short跟SHORT1速运算就超了,就是超了这个short的范围了啊,那你这样就相当于呃,如果我们规定说short跟short做运算还是short的话呢,你会发现你编译没有错,但运行的时候可能挂了,所以他干脆呢,就是呃,强制要求你编译的时候呢,必须把它也得复成个int,避免呢,你运行的时候挂。
10:05
能能理解这事吧,啊对,就是因为他们很容易呢,一运算就超了啊,所以干脆强制要求就变成阴的啊,这是我想的一个一个一个解释啊嗯,行,这是咱们说的这个叫自动类型提升啊嗯,张二在做运算时,如果操作数均在一个范围内,那么一律在,呃,这不就是说的跟我这是一个事嘛,现在咱们解释的就是说为什么他是要这样说对吧?嗯。
我来说两句