ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] # 基本数据类型 ![](https://box.kancloud.cn/9ca5835ccd0ce117a12f4d4661518052_508x76.png) # 数据长度 所谓数据长度(Length),是指数据占用多少个字节。占用的字节越多,能存储的数据就越多,对于数字来说,值就会更大,反之能存储的数据就有限。 多个数据在内存中是连续存储的,彼此之间没有明显的界限,如果不明确指明数据的长度,计算机就不知道何时存取结束。例如我们保存了一个整数 1000,它占用4个字节的内存,而读取时却认为它占用3个字节或5个字节,这显然是不正确的。 所以,在定义变量时还要指明数据的长度。而这恰恰是数据类型的另外一个作用。数据类型除了指明数据的解释方式,还指明了数据的长度。因为在C语言中,每一种数据类型所占用的字节数都是固定的,知道了数据类型,也就知道了数据的长度。 在32位环境中,各种数据类型的长度一般如下: ![](https://box.kancloud.cn/58def6cf72bd8697796543450e618600_453x108.png) 数据是放在内存中的,在内存中存取数据要明确三件事情:数据存储在哪里、数据的长度以及数据的处理方式 上面我们在描述 short、int、long 类型的长度时,只对 short 使用肯定的说法,而对 int、long 使用了“一般”或者“可能”等不确定的说法。这种描述的言外之意是,只有 short 的长度是确定的,是两个字节,而 int 和 long 的长度无法确定,在不同的环境下有不同的表现。 > 一种数据类型占用的字节数,称为该数据类型的长度。例如,short 占用 2 个字节的内存,那么它的长度就是 2。 实际情况也确实如此,C语言并没有严格规定 short、int、long 的长度,只做了宽泛的限制: * short 至少占用 2 个字节。 * int 建议为一个机器字长。32 位环境下机器字长为 4 字节,64 位环境下机器字长为 8 字节。 * short 的长度不能大于 int,long 的长度不能小于 int 总结起来,它们的长度(所占字节数)关系为: ~~~ 2 ≤ short ≤ int ≤ long ~~~ 这就意味着,short 并不一定真的”短“,long 也并不一定真的”长“,它们有可能和 int 占用相同的字节数。 在 16 位环境下,short 的长度为 2 个字节,int 也为 2 个字节,long 为 4 个字节。16 位环境多用于单片机和低级嵌入式系统,在PC和服务器上已经见不到了 对于 32 位的 Windows、Linux和 Mac OS,short 的长度为 2 个字节,int 为 4 个字节,long 也为 4 个字节。PC和服务器上的 32 位系统占有率也在慢慢下降,嵌入式系统使用 32 位越来越多。 在 64 位环境下,不同的操作系统会有不同的结果,如下所示: ![](https://box.kancloud.cn/3d5b8315b7ed1e9462c7d7aef53fdc77_509x100.png) # 不同整型的输出 使用不同的格式控制符可以输出不同类型的整数,它们分别是: * `%hd`用来输出 short int 类型,hd 是 short decimal 的简写; * `%d`用来输出 int 类型,d 是 decimal 的简写; * `%ld`用来输出 long int 类型,ld 是 long decimal 的简写。