C语言支持的基本数据类型
通过前面的例子分析,我们知道了房子的类型,决定了房子的属性。比如一套一居室的房子,有空个房间;两室一厅的房子空。同样,在C语言中,提供了“数据类型”,可以定义变量。不同数据类型定义的变量有不同的存储空和用法。
C支持的基本数据类型有:
(1) char型,即所谓的“字符”型。一个字符是‘一’, ‘B’, ‘C & # 8217, ‘#’, ‘!’这样的数据。char类型的变量称为字符变量,可以存储字符。类型变量char占用1个字节的存储空。
(2)短型,称为“短整数”。用来存储一个整数值,比如100,188,short类型变量占用2个字节的存储空。
(3) int类型,称为“整数”。用来存储整数值,int类型变量占用4字节存储空。
(4)长型,称为“长整数”。用来存储一个整数值,long类型的变量占用4 bytes 空的存储空间。再者,long类型可以组合成long long类型,占用8个字节的存储空。
(5)浮点型,称为“单精度浮点型”。它存储一个带小数点的浮点数,如12.345和16.888。float类型变量占用4个字节的存储空。
(6)双型。双精度型称为“双精度浮点数”。它存储一个浮点数,double变量占用8个字节的存储空。
对于char、short、int和long类型,默认为“有符号数”类型,因此可以表示负数。然后,它们可以与unsigned关键字结合使用来表示无符号类型数据。
注意:由float和double表示的浮点数不能与unsigned关键字结合使用。
我们可以在下表中总结“有符号数类型”和“无符号数类型”的存储容量和取值范围。
数据类型容量(位数)取值范围char8(1个字节)-128 ~ 127(-2^7 ~ 2^7-1)unsigned char8(1个字节)0 ~ 255(0 ~ 2^8 – 1)short16(2个字节)-32767 ~ 32768(-2^15 ~ 2^15-1)unsigned short16(2个字节)0 ~ 65536(0 ~ 2^18-1)int32(4个字节)-2147483***8 ~ +2147483***7(-2^31 ~ 2^31-1)unsigned int32(4个字节)0 ~ 4294967295(0 ~ 2^32-1)long32-2147483***8 ~ +2147483***7(-2^31 ~ 2^31-1)unsigned long320 ~ 4294967295(0 ~ 2^32-1)long long***-9223372036854775808 ~9223372036854775807(-2^63 ~ 2^63-1)unsigned long long***0 ~ 18446744073709551615(0 ~ 2^***-1)
char类型的最大值是2 ^ 7-1,unsigned char类型的最大值是2 ^ 8-1。可以看到,由于char类型变量的最高位被用作符号位,所以只有7位被用作数值位,而无符号char类型变量的所有8位都被用作数值位。所以能代表最大值的范围是不一样的。假设一个变量的数值位有n位,那么可以表示的最大值是2的n次方减一,也就是2^n –1。例如,数字位是1111 1111。此时数值位有8位,所以它的值是1 * 2 0+1 * 2 1+1 * 2 2 3+1 * 2 4+1 * 2 5+1 * 2 6+1 * 2。如果这个计算是繁琐的,那么我们可以认为:
1111 1111 + 1 = 1 0000 0000
所以,有:
1111 1111 = 1 0000 0000 – 1
= 1*2^8 –一个
这样计算,可以快速得到N位全1的二进制,其值为2n–1。
5.1字符类型
在C语言中’一’、’B’、’C & # 8217、’#’、’?’这样的符号就是字符。字符可以存储在字符变量中。字符的特征是:
(1)必须使用单引号‘‘包括字符;
(2)字符可以是ASCII表中字符集的字符;
c语言提供了关键字char来表示“字符类型”;可以定义字符类型的变量;例如:
该程序的输出如下:
可以看到,char关键字用来定义字符型的变量,分别定义了变量A和变量B,都是字符型,变量A用’X & # 8217字符,它们存储在B变量’Y & # 8217人物。
最后,在printf()函数中,存储在字符类型变量中的字符以%c格式输出。
注意:单引号必须用于分配给字符变量的字符’‘包括字符。
一个字符在内存中存储它的ASCII值,所以我们可以把一个字符的ASCII值赋给一个字符变量,然后输出。测试示例如下。
程序运行结果如下:
正如你所看到的,我们把‘0’字符的ASCII值被赋给字符变量a,就像字符‘0’给字符变量a同样的。因为,人物‘0’的ASCII值为48,在内存中存储为48的值。因此,这就像直接将ASCII值赋给字符变量。
通过这个例子,我们也区分了人物‘1’它不同于值1。1的值是1,但字符’1’的值是其ASCII值,即数字49。
5.2整数类型
自然数中,100、1、99等数值称为“整数”。然后在C语言中,提供相关类型来存储整数值。
c语言提供了关键字short,int,long来表示整数类型,可以定义整数变量。例如,值588是一个整数值,因此它可以存储在一个整型变量中。测试示例如下:
该程序的输出如下:
如你所见,在C语言中,提供了关键字short、int和long来定义整数类型,它们是有符号的数字类型。因此,在变量Y中,可以给负数赋值。
注意,char数据类型虽然是字符型,但是有1字节存储空,1字节存储空可以存储8位二进制数据,可以用整数值表示。
在C语言中,关键字char、short、int、long的数据默认都是有符号的,所以存储的数据可以表示负数。例如,char类型的变量具有一个字节的容量,最高位是符号位,其余七位是数据位。可以表示的最大值是0111 1111,十进制是127。的最小值是1000 0001,小数是-127。
5.3浮点型
自然数中,1.23、6.99等带小数的数据称为浮点数。在C语言中,提供了关键字float和double来指示浮点类型,并且可以定义浮点变量。
下面是一个测试的例子:
运行该程序的结果如下:
正如您所看到的,我们已经定义了浮点类型变量a1和a2,并且可以为它们分配十进制值。然后,变量中的浮点数以%f格式输出。注意:因为printf函数输出的是带精度部分的浮点数,小数部分输出的是6位,所以不足的零是填充的。所以1.23的数据输出是1.230000,小数点有6位。
注意:浮点型不能和unsigned关键字组合成“unsigned浮点数”。是以下测试的示例:
编译测试程序的结果如下:
如你所见,你不能使用unsigned关键字来修饰float和double等浮点类型。
本文来自秦楚殇投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/635942.html