栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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没有正负之分。

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号