00:01
我们来继续看一下。这个C语言里面基本数据类型的转换问题,那么基本数据类型转换呢,分成两大类,一类呢,我们称之为自动类型转换。就是它自动就可以发生类型转换,那么我们来看一下什么叫做自动类型转换呢?简单的讲是这样子,当程序在运行进行赋值或者运算的时候,精度小的类型叫做精度较小的,或者你理解成能够表示范围较小的这种数据类型。能够自动的转为精度较大的数据类型,我们把这个称之为自动类型的转换。那么我们来看这边有第第一张表,就这张表,这张表呢,或者这这个图,它表示了我们数据精度从低到高的一个顺序,好,我把这再加一个哈。这叫精度从低到高的一个顺序表,你比如说short。
01:06
它的精度没有int大,Int的精度呢没有sand int大,以此类推,那我们可以看到精度最大呢是no double次之,Double也就是说我们精度是按照这如果是按照这个线来讲呢,就是从左向右,从左向右依次增高,这个是他的从我们数据类型从低到高的一个顺序,那大家看这面还有一张表。这张表是什么呢?这张表我给大家写一个标题,大家明白了,这个是我们的精度,就是数据。数据类型,新数据类型自动转换,自动转换的这个这个表。你打个比方吧,大家看这里说什么意思呢?说如果你把这个char或者是salt付给这个int,它是OK的,它会自动转换,也就是说你把一个short的数据类型赋给一个int的数据类型是没有问题的,它会自动的进行转换。
02:09
把一个int,呃,再把一个T付给一个sand,就是无符号的int也可以自动转换,那么我们也可以把int给到这个no no可以给到double,那注意看,那么double,呃,Float呢?Float也可以转成这个double。自动转换的啊,自动转换。所以说这个就是我们所说的数据类型的自动转换表,这是它的一个基本,这是它的一个基本原基本规则哈,这个规则大家一定要记住。如如果你把这个规则没有一个印象的话,后面咱们写代码的时候呢,你会有点蒙圈,就说数据类型自动转换的一个一个规则表,或者说一一个一个这个这个。流程或者是他的一个呃,规定,嗯,就是这样子规定的就是char short可以自动转成int int可以转成它对应的无符号的这种数据类型,那么它还可以继续转成nor nor呢可以转成double。
03:11
Float也可以转成double,是自动完成的,再说一遍是自动完成的。好了,那这个基本原理明白了过后呢,我们有必要给大家来看一个案例,比如说同学们看我这里有这么一个案例,我把这这个大家看出来是什么意思吧,是把一个字符给到C。大家看C1付给这个NUMBER1是OK的,为什么OK啊,因为你这句话其实是把这个char。赋给一个int,它可以发生自动转换,因此这个是OK的。那么我们再把这个NUMBER1付给这个double也是OK的,为什么呀,因为int是可以。转成double的。大家看刚才那个图是不是这样说的啊,你看这里是不是我们这个int。可以往上转啊,说有些同学说了,所他他不是要先转成这个吗,再转这个这个没关系,就说这个int往上转,只要只要是在这个这条线上就可以。
04:13
也就是说我们可以把in特付给一个nu,也可以把也可以把特付给一个double,这都没问题,那么我们来看一下这这个案例是否可以运行。那同学们,我们。我们给大家来运行一把。我们来测一下哈,这叫转换。还是一样,起个名字叫做类型转换。Type type不是类型吗?转换,咱们叫transfer吧,Transfer OK,类型转换。嗯,那么现在呢,我们,呃,给他添加进去。好,同样我先把这个后缀改成C。没问题。则include ST dl没问题吧,同学们,那现在呢,我们写个VO走起来。
05:04
根据刚才的演示,我们先拿到一个C,给他一个A,没有没有问题,然后呢,我想干什么呀,我用一个number来接收C,这个是可以的。可以的,然后呢,我再用一个double第一来接收我们NUMBER1,这个也是OK的,我们来编译一下。我们来编一下,我们发现呢,同学们可以看到,诶,你发现没有报任何错误,对吧,成功了吧,可以的,代码没有任何问题就成功了,那成功的话呢,你们可以输出,这里我就不输出了,好吧,这里肯定是可以的,这是OK的,都是OK的,那接着我们继续往下看,那么自动类型转换呢,有几个细节需要同学们了解的。第一个细节需要给他们说清楚。当多种数据类型进行混合运算的时候。系统首先。将所有数据类型转成京都较大的那个数据类型。
06:03
然后再进行计算,比如说int类型和short类型转换,先要把short转成int类型,再进行这个预算,那我举个例子。还在这地方举例,好,这是我们的,嗯,第一个例子吧,举例一,这边呢是我们的举例二。干扰我的思路啊,呃,举例二的话呢,还写到这吧,举例二。举例二。举例二,举例二,你大家来看我这样举例,看大家能否明白,比如说我有一个呃,我有一个NUMBER2,大家看一下啊,NUMBER2。OK。嗯,这样吧,咱们就要取个shot。Short就S1等于什么呢?等于十没问题,然后呢,我再写个。Int number等于20。那么现在呢?我要把S1和NUMBER2相加。
07:01
大家看这时我要怎么接收呢?我要用NUMBER3来接收,大家看这里S1加number。大家看这样子是没有问题,因为你的S1和NUMBER2相加过后呢,它整个这个结果哈,会提升成因为。因为这个int类型较大嘛,所以说你再把它付给这个int,这是可以的。这是第一个需要同学们知道的,第二个呢,若两种类型的字节数不相同,换成这转换成自己较大的数据类型,若两种数据类型相同,且一种有符号,一种无符号,转成无符号的。也是往上提。第三一点,同学们看这个,到时举个例子。第三一点是这样的,同学们在负值运算中,在负值的运算中,负值号两边的数据类型如果不同,就是等号两边不一样哈,负值号左边的,我们在想负值负负值号左边的类型将自动转成右边的。
08:07
右边的数据类型,如果右边变量的数据类型的长度。比左边的长将丢失一部分数据,从而降低我们的精度。这所以说这样大家要注意这句话什么意思呢?我给大家举个例子,大家就一目了然了,来,我给大家看一个小案例。呃,我们这样子举例哈,我们这样给大家举例。举一个什么样的例子呢?咱们再举例说明三吧。举例说明三,怎么说呢?大家看我这里有一个float,注意看啊float f1等于1.1F。这个是不是OK的。我把一个单精度给到一个单精度变量可以的第二个double。好的,Double第一。我们第二吧,因为刚才已经有一个第一了,第二第二呢,我给一个值是4.56 4.586,比如说多来几个吧,咱就多来几个式子。
09:10
好,现在呢,我做了这样一个工作,同学们看我F1,我把第二给到F1这个地方,就会出现同学们啊,这就出现了精度损失。精度损失。那为什么会出现精度损失呢?你想想你是以这边是精度大的,你把一个精度大的给到一个精度小的,就会出现精度损失,即因为原因是原因,就是刚才我我在这说的这个道理。就是如果你右边的变量数据类型的长度比左边的长,将会丢失一部分数据,因为你现在右边是不是double类型啊。你左边是不是flow类型,显然double是八个字节,你FLOAT4个季节出现顺度警示,也就是说相当于说你是把一个double。给到了一个float。因此精度损失,那何以证明呢?我给大家输出一下。
10:04
比如说我输出一个,我输出这一个F1。我输出这个F1。我输出这个F1过后呢,你会发现你给的这个值并不是原封不动的给到他的,我给大家输出来一下来,为了好看呢,我把这个。呃,我我把这个小数位写大一点,比如你现在小数是123456788位,我就保留到小数点八位进行输出。我输出F1。大家可以看到本身你期望是把这个值给到这个F1,那你当然你期望输出的结果是这个了,也就是说你你本身的本意是期望。是这个值,但实际上是不是这个值呢?我们来运行一下。好同学们看我们运行过后呢,你会发现哈,你会发现跟我们想的诶对,我们应该get恰下。
11:01
我暂停一下这个地方啊,把它把这个。控制台停在这里,我们看这边输出的结果跟我们想的呢是有区别的,来看这里。你看你是这样一个值,后面变成这个值了。看吗?5866758667,到这后面是435,后面变成421,显然有精度损失。那如如果说你给的是一个double就不会有问题,比如说这第20个double,你接收的时候呢,你按一个double来接收,比如第三。这个就没问题,明白意思吧,好,关于这个小这个,诶这个这个问题啊,就说到这看。还停在这儿。关于我们这一个基本数据类型的一个自动转换,我们就聊到这里,现在我们把刚才讲的做一个小结。那刚才我们讲的是什么内容呢?我们讲的是基本数据类型的一个转换。
12:02
呃,我们首先介绍的是自动转换。自动转换的一个节奏啊,自动转换呢,我们首先做了一个基本介绍,对介绍一下它是什么叫基本转换,然后呢,这边我们我们给大家看了一个数据类型,按精度大小排序的一个示意图,就这张图。我列到这里来。是吧,我把这个放在这里好吧。把这个放到这里。好,那么紧接着呢,我们这儿还有一个就是老师在刚才讲的规则。它的一个转换的规则是什么样子的,我也列到这里。来标题三吧。表三,我把这个图呢也给大家拿过来好吧。OK,就把它拿过来了,这是我们自动转换的一个规则,那最后这说完了以后呢,我们又讲了一下自动转换的一个案例和它的细节,我们就捋到这儿了,放在一起吧。
13:02
好,我们首先呢,给了一个案例,还是标题三,这边引来一个标题三,那这边我们说在自动转换的时候呢,是需要同学们注意的几个细节,就这里。就是什么意思呢?就是这边写的很清楚了,就是他在运算的时候,先把所有的数据提升进度较大的。对,然后呢,这边要注意,如果我们右边的变量的数据类型比左边的长要大,就是右边右边的数据类型比左边尝试将。丢失一部分数据。就是刚才举的这个例子,好,我把案例代码演示。代码也是给同学们拿到这边来,具体来说就这个小案例,Type transfer。给同学们放到这里。便于我们的阅读。好,同学们,那关于我们基本数据类型的自动转换这一节,我们就给大家聊到这里。
我来说两句