C语言

您所在的位置:网站首页 c语言中最基本的数据类型是 C语言

C语言

2024-07-11 00:52| 来源: 网络整理| 查看: 265

本文主要介绍C语言中的基本数据类型(带*的章节内容为进阶知识,对于初学者可以暂时跳过)。

文章目录 1. 什么是数据类型2. 基本数据类型3. 有符号与无符号的区别和最值4. 浮点数的存储方式*4.1 二进制小数4.2 科学计数法4.3 浮点数的存储 5. 变量与标识符6. 字符型与ASCII表参考资料

1. 什么是数据类型

数据类型,重点是类型。何谓类型,就是一组元素,具有某些相同的性质,我们可以把这些性质高度归纳概括为一个词语,那么这个词语就代表了一个类型。例如,狗就是一种动物类型。

在数学中,数的分类如下:

在这里插入图片描述

例如,数字 1 的最小类型就是正整数,最大类型就是实数。

在C语言中,我们需要有一个机制来表示数字,这就是用二进制数来表示十进制数。但是,我们知道,数的范围是 [ − ∞ , + ∞ ] [-\infty, +\infty] [−∞,+∞],正如我们不可能在一张纸上写下所有的数字,计算机也不可能表示所有的数字。所以计算机表示的数字是有一定范围的,这个范围由二进制位的数量和如何解释二进制表示来确定的。

2. 基本数据类型

在C语言中,基本数据类型包括整型、布尔型、字符型和浮点型。

整型:只能表示整数,对应于一部分有理数中的整数;浮点型:能表示小数,对应于一部分的分数;布尔型:特殊类型,该类型的数据只有两个:true或者false,也可以是1或0;字符型:属于整型的一种,表示一个字符;

完整列表如下:

数据类型含义字节大小范围bool布尔型1true、false(1、0)[signed] char有符号字符型1[-128, 127]unsigned char无符号字符型1[0, 255][signed] short有符号短整型2[-32768, 32767]unsigned short无符号短整型2[0, 65535][signed] int有符号整型4[-2147483648, 2147483647]unsigned int无符号整型4[0, 4294967295][signed] long有符号长整型4[-2147483648, 2147483647]unsigned long无符号长整型4[0, 4294967295][signed] long long有符号超长整型8 [ − 2 63 , 2 63 − 1 ] [-2^{63},2^{63}-1] [−263,263−1]unsigned long long无符号超长整型8 [ 0 , 2 64 − 1 ] [0, 2^{64}-1] [0,264−1]float单精度夫浮点数4略double双精度浮点数8略

在不同的电脑上,数据类型所占有的字节大小可能不同。以我的电脑为例:

# include int main(){ bool a = true; char ch = 1; unsigned uch = 1; short b = 1; unsigned short c = 1; int d = 1; unsigned int e = 1; long f = 1L; unsigned long g = 1L; long long h = 1L; unsigned long long i = 1L; float j = 1.00; double k = 1.00; printf("bool所占字节大小为:%d\n",sizeof(a)); printf("[signed] char所占字节大小为:%d\n",sizeof(ch)); printf("unsigned char所占字节大小为:%d\n",sizeof(uch)); printf("[signed] short所占字节大小为:%d\n",sizeof(b)); printf("unsigned short所占字节大小为:%d\n",sizeof(c)); printf("[signed] int所占字节大小为:%d\n",sizeof(d)); printf("unsigned int所占字节大小为:%d\n",sizeof(e)); printf("[signed] long所占字节大小为:%d\n",sizeof(f)); printf("unsigned long所占字节大小为:%d\n",sizeof(g)); printf("[signed] long long所占字节大小为:%d\n",sizeof(h)); printf("unsigned long long所占字节大小为:%d\n",sizeof(i)); printf("float所占字节大小为:%d\n",sizeof(j)); printf("double所占字节大小为:%d\n",sizeof(k)); return 0; }

在这里插入图片描述

3. 有符号与无符号的区别和最值

我们以字符数据类型char为例,来解释有符号和无符号的区别以及最值是如何得来的。首先明确有符号数和无符号数:

有符号数:可以表示正数、0和负数;无符号数:只能表示正数和0,不能表示负数;

字符数据类型char所占字节大小为1,表示用8位二进制位来存储字符数据。8位二进制位可以表示256个数,从0000 0000到1111 1111。

如果是有符号字符数据类型,那么理解二进制的方式就是按照补码的形式进行理解:

0 000 0000 - 0 111 1111 : 表示0和正数,范围是 [0,127] 1 000 0000 - 1 111 1111 : 表示负数,范围是[-128,-1]

如果是无符号字符数据类型,那么理解二进制的方式就按照普通的二进制理解:

0000 0000 - 1111 1111 : 表示0和正数,范围是[0,255]

这就是有符号和无符号的区别,以及最值是如何得到的。

之后,如果一个数据类型没有明确指明其为无符号,则默认为有符号。

4. 浮点数的存储方式*

本部分内容为进阶知识,对于入门同学来说,可以暂时跳过。

前面我们讲解了有符号整数和无符号整数是如何在二进制中进行存储的,现在我们讲解浮点数是如何在二进制中存储的。首先需要了解二进制小数时如何表示的。

4.1 二进制小数

有如下图片,表示二进制序列:

在这里插入图片描述

图源:参考资料[2]

上图表示的二进制值转换为十进制公式为: b = ∑ i = − n m 2 i × b i b = \sum_{i = -n}^{m}2^i\times b_i b=i=−n∑m​2i×bi​ 例如, 101.1 1 2 101.11_2 101.112​表示的十进制数为: 1 × 2 2 + 0 × 2 1 + 1 × 2 0 + 1 × 2 − 1 + 1 × 2 − 2 = 4 + 0 + 1 + 1 2 + 1 4 = 5 3 4 1 × 2^2 + 0 × 2^1 + 1 ×2^0 + 1 × 2^{−1} + 1 × 2^{−2} = 4 + 0 + 1 + \frac{1}{2} + \frac{1}{4} = 5\frac{3}{4} 1×22+0×21+1×20+1×2−1+1×2−2=4+0+1+21​+41​=543​

4.2 科学计数法

在十进制中,所谓科学计数法,就是一个数d被写成一个实数a,与一个 10 的n次幂的积: d = a × 1 0 n d = a \times 10^n d=a×10n 其中:

n必须是一个整数 1 ≤ ∣ a ∣ < 10 1\leq|a|


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3