2021-02-17

计算机是处理数据的,而在C语言中数据是有分类的。

有字符                                        char

整形                                            int

短整型                                        short

长整型                                        long

长长整型                                    long long(整个数据类型是在C99提出的)

单精度浮点数                             float

双精度浮点数                             double

我们创建变量的时候是要注意变量的类型来归类的。我也注意到,主函数的开头是int main(),鹏哥也讲过,由于是int,所以最后要返回一个整型。

按照这个说法,那我把主函数改成short main()也应该可以,当然结果是运行成功了:)

为什么要分这么多种类型呢。一是为了节省空间(符合C语言精神)

二是丰富表达类型(这是我没想到的,也不知道有什么好处)

那么int 和short(其实是 short int)的区别有什么呢,短整型有多短捏。

用打印函数来看他们的大小(此处要用sizeof()函数),最后可以看见,short占据2个字节,int则占据4个字节。

关于字节byte 通常用B表示,他有比特bit有这样的数字关系,1byte=8bit。

1bit其实就是一个二进制数字,他可以是0也可以是1,占据这么一个人为规定的大小。

那么我们用这些2进制的数字来表示数字,short最多可以表示到2^(2*8)=65536,但是由于还有一个0,所以最多只能表示到65535。

按照这个我来进行实验,结果发现short a = 65535;时,打印出来的东西是   -1

尝试一下65536会不会出错,结果打印出来的是 0

按照这个结果来看,如果他是有算负数的话,那最多就只能打印到32767(为什么不是一半呢,我是这么认为的,从实际数0开始算做编号1,那么一到一半的话,就是一半减一)

结果是正确的,当创建变量味32768的时候,打印出来的数字是 -37268

那么为什么65536可以创建然后打印出来的是0呢

根据前面的说法,如果创建65536的话,那应该用16个二进制(2byte)是不行的,然后整型占用空间都是双数,所以我假象是32个二进制(4byte),

那么65536用二进制表示应该是  00000000 00000000 11111111 11111111

而短整型是占据2byte的,那么按照结果来推论,后面的1应该全都被忽略掉了,剩下前面的16个0 ,而它的编号代表的数字也正是0。

接下来到了另一个疑问的地方,整型(int)和长整型(long)占据的大小相同

其实按照标准规定,long的大小只需要>=int即可

在网上查找了会资料,他们的大小主要还是取决于编译器,我对于编译器了解还是很少,所以就暂时不深究下去。

 

小tip:浮点数的输出符为%f

系统输出的时候默认为双精度浮点数,如果要较为规范的用的话  在创建float变量后应加个f

Eg: float num1 = 10.6f;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值