前言
我们学习数学的时候,数学会将数字定义成各种各样的类型,例如:小数,分数,整数.....在我们c语言学习中,c语言对于不同的数据同样也定义的不同的类型,计算机是不懂我们定义的这些数据类型,他只能读取0或者1,这样就导致在c语言定义的数据类型就是让计算机在读取我们定义的数据的时候读取的0或者1的个数,例如int类型是4个字节,32个bit。(32位机器环境)
数据类型
整数(int,short,long)
int、short和 long是C语言中用于表示整数的不同数据类型,它们在大小和范围上有所区别。
1. int(整型):
int通常占用4个字节(32位系统)或8个字节(64位系统)的内存空间,具体取决于编译器和操作系统。表示的整数范围通常为 -2,147,483,648 到2,147,483,647 (32位系统)
那么这个具体的范围是怎么算出来的,异想天开吗?
我们可以计算一下,int有4个字节,一个字节有8个比特位,int有32个比特位,一个比特位就是一个1或者0,那么int就是32个0或1,刚学习计算机的时候,我们了解到,计算机在内存中储存的是补码,就是反码加一,而正数就是原码,那么对于int类型的正数,第一位符号位,最大也就是31个1我们用电脑上的计算机计算一下0111 1111 1111 1111 1111 1111 1111 1111 也就是2,147,483,647,对于负数也是一样也就是说,那些定义的数据类型也就是告诉系统,这个数据要读取多少位0或者1。
2. short(短整型):
short用于表示较小范围的整数。
通常占用2个字节的内存空间。范围计算方法都是一样的,short2个字节,相应比特位16个除去第一位符号位,正最大范围也就是0111 1111 1111 1111也就是32,767。
表示的整数范围为 -32,768 到 32,767。
3. long(长整型):
long用于表示较大范围的整数。
通常占用4个字节(32位系统)或8个字节(64位系统)的内存空间。表示的整数范围通常为 -2,147,483,648 到 2,147,483,647(32位系统)或 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(64位系统)。
总体而言,对我们来说,这些整数类型的选择取决于你所处理的数据范围。如果你知道数据不会超过 `short` 的范围,可以选择使用 `short` 来节省内存。如果需要更大的范围,可以使用 `long`。而 `int` 则通常是一个通用的选择,因为它在大多数系统上都提供了合理的范围,同时也保持了适中的内存使用。
浮点数类型(float,double)
浮点数类型在C语言中用于表示实数,包括小数和指数部分。C语言提供两种主要的浮点数类型:float 和 double。而浮点数的储存与整型的存储方式不一样,现在是采用IEEE 754标准,它规定浮点数每一个部分储存所占用的比特位数(想要更加了解浮点数的储存方式请看下一篇文章)。以下是关于浮点数类型的一些重要信息:
1. float(单精度浮点数):
float 用于表示单精度浮点数,通常占用4个字节的内存空间。有效位数通常为6-9位,范围为大约 1.2e-38 到 3.4e38。例:`float floatValue = 3.14f;`(注意:末尾的 `f` 表示这是一个 `float` 类型的常量)。
2. double(双精度浮点数):
double用于表示双精度浮点数,通常占用8个字节的内存空间。有效位数通常为15-17位,范围为大约 2.2e-308 到 1.8e308。例:`double doubleValue = 2.71828;`
3. 科学计数法表示:
浮点数可以使用科学计数法表示,例如 `3.14e2` 表示 3.14 乘以 10的2次方。
这种表示方式有助于处理极大或极小的数值。
float scientificFloat = 1.23e-5f; // 0.0000123
4.浮点数运算:
浮点数运算包括加法、减法、乘法、除法等,但由于浮点数的二进制表示的精度限制,可能会出现精度损失。
使用浮点数时应注意避免直接比较相等性,而应该使用一个误差范围。
float result = 1.0 / 3.0; // 结果将是0.333333,而不是精确的1/3
5. 常量后缀:
浮点数常量后面可以加上 `f` 或 `F` 表示 `float` 类型,或者加上 `l` 或 `L` 表示 `long double` 类型。
float floatValue = 3.14f;
double doubleValue = 2.71828;
浮点数类型在涉及实数运算和精度要求较高的场景中非常有用,但也需要谨慎处理精度问题。选择使用 `float` 还是 `double` 取决于所需的精度和内存占用的平衡。
字符类型(char)
字符类型 `char` 在C语言中用于表示单个字符的基本数据类型。
1.char用于表示单个字符,可以是字母、数字、标点符号或特殊字符。- 例:`char ch = 'A';`
2. ASCII 码:
- 字符在计算机内部以ASCII码形式存储。
- 例如,大写字母 'A' 对应的ASCII码是 65 ,'a'对应ASCLL码是97,他们相差32,我们根据这一点可以将大写小写字母联系到一起,解答某些问题。
3. 大小和存储:
通常占用1个字节的内存空间。存储的值范围为 -128 到 127 或 0 到 255,具体取决于是否使用有符号或无符号 `char`,计算方法是与整型一样的,而我们没有讲的无符号类型就是前面第一位的符号位没有了,全部都是有效位数,可以自己计算一下无符号的int类型的范围。
4. 有符号和无符号 char
在C语言中,`char` 类型默认是有符号的,可以表示负数和正数。
若要将 `char` 定义为无符号类型,可以使用 `unsigned char`。
char signedChar = -10; // 有符号 char,范围 -128 到 127
unsigned char unsignedChar = 200; // 无符号 char,范围 0 到 255
char类型在C语言中广泛用于处理字符数据,例如字符串的表示和处理。在处理文本数据或字符操作时,`char` 是一个基础而重要的数据类型,在后面,因为char指针可以一个字节一个字节的处理数据,可以让我们在后面处理多种不同数据类型的时候得到极大帮助。