C语言数据类型(超详细)

目录

1、为什么要有数据类型?

2、数据类型的分类

3、类型修饰符

4、有符号与无符号


1、为什么要有数据类型?

数据有特定的数据类型,就像数学中的数,有实数,整数,小数,分数等等,区分数据类型的主要目的是便于对它们按不同的方式和要求进行处理。在C程序中,每个数据都属于一个确定的、具体的数据结构。    没有数据类型的数据,在C语言中运用是错误的。

又类比数学中的数据有正有负,在C语言中在基本数据类型前面添加的修饰符为类型修饰符对基本数据类型进行更加精确的声明。

不同的数据结构在数据表现形式取值范围占用空间大小及可以参与的运算种类方面是不同的。

2、数据类型的分类

以上图片中清楚的展现了,不同数据类型之间的关系。

C99标准下,新增的数据类型,有long long整数类型、bool布尔类型、复数类型。

3、类型修饰符

除void以外,类型修饰符主要对基本数据类型进行修饰,共有以下4中:

1、signed:即为有符号,可以修饰int、char基本类型。值得注意的是,int本身默认为有符号,所以不加signed修饰符也是可以的。

2、unsigned:即为无符号,同样修饰int、char基本类型。

3、long:即长型,可以修饰int、double基本类型。

4、short:即短型,可以修饰int基本类型。

当类型修饰符被单独使用时,系统默认其修饰的是int型,所以以下几种用法是合理的。

signed      等价于      signed int

unsigned      等价于      unsigned int

long      等价于      long int

short      等价于      short int

4、有符号与无符号

有符号和无符号在C语言或者是二进制中是怎么表示的呢?

想要搞清楚这个问题,我们就要先搞清楚数据在计算机中是如何存储的?

数据在C语言中是以二进制形式存储的,假设现在规定有一个八位的二进制数据,有符号的第一位表示符号位。符号位0,表示正数;符号为1,表示负数无符号的,全都存储数据。

第一位代表符号,后面7为表示数据。

同样的,第一位代表符号,后面7为表示数据。 

那么有符号的八位数的取值范围为: 

相对应的,无符号的八位数的取值范围:

因为有符号的数据位比无符号的数据为的最高位少了一位,所以有符号整数的最大数的绝对值只有无符号整数最大数的一半。

那么我们在来搞清楚一个问题,计算机能不能做减法?!

我们首先先规定数据的长度为4位,那么如果运算超出4位的数据就叫溢出溢出的数据我们舍去

 

 为此我们引出补码的概念。

补码=负数的原码(除符号位)取反后加一。

 在这里还有一个经典问题:0有没有正负之分?

假设有,+0=00000000

              +0(除符号位)取反=11111111

              +0取反后加一=100000000

              -0=10000000

              -0(除符号位)取反=11111111

              -0取反后加一=100000000

显而易见,+0和-0的补码是相同的,即0的补码表示是唯一的,那么0就没有正负之分。

最后,对有符号和无符号进行总结:

           抛弃前面的第一位是符号位的概念,目前在计算机里面数据的存储都是以补码形式存在的。

           计算机的只能做加法,不能做减法,减去一个数,等于加上一个负数。 

           运算之前要清楚知道自己要存储的数据是否在所规定的类型长度内,避免造成数据的溢出。例如:int 型占两个字节,long int型占四个字节。 

           0没有正负之分。

至此,感谢观看,祝大家身体安康,学业有成!!!

  • 19
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无念至此

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值