不同类型的变量
在实际编程中,我们可能会处理不同格式的数据、不同长短的数据、不同大小的数据。C语言提供给我们一系列的关键字用来标识数据的不同类型,如:
- int
- char
- long
- float
- double
- signed
- unsigned
有符号型和无符号型
C语言把整型数据分为有符号型和无符号型两种,分别使用signed和unsigned来标识。学生的学号、年龄都是大于0的正值,一般可以用无符号数表示。而气温可能是零上,也可能是零下,这个时候就要用有符号数来标识了:+25标识零上25摄氏度,而-25则表示零下25摄氏度。
有符号数和无符号数在内存中的存储也是不一样的。以一个8位宽度的数据为例。无符号数据的8个bit位都用来表示大小,而有符号数则用最高位表示数的正负(0表示正,1表示负),剩下的7个bit位用来表示数的大小。
整型数据
不同类型的数据,其在内存中的存储长度是不一样的。在一个32位的计算机系统中,一个字符型数据使用char来标识,长度为8位;一个整型数据使用int 来标识,长度一般是32位;而一个短整型数据则使用short int来标识,长度一般为16位,一个长整型数据则用long int来标识,长度一般是32位。
不同类型的数据,其长度不同,能表示的最大数值也不同。一个字符型数据,因为长度是8位,所以能表示的最大数值是255;一个整型数据,因为长度是32位,所以能表示的最大数值为2^32-1。
同一种类型的数据,根据其是signed还是unsigned,表示的数据范围也不同。比如signed char类型能表示的数值范围为[-128, 127],而unsigned char类型则能表示的数值范围为[0, 255]。
浮点型数据
生活中不是所有的数据都是整数,比如你的考试成绩,有可能是99.5分,人体的温度一般是36.5℃,今天的气温有可能是23.5度。对于这些带小数的数据类型,我们可以使用浮点数来表示。
float score = 99.5;
float temputure = 36.5;
我们同样可以使用printf函数将这些数据打印出来:
//main.c
#include <stdio.h>
int main(void)
{
float score = 36.5;
float temputure = 99.5;;
printf("score = %f\n", score);
printf("temputure = %f\n", temputure);
return 0;
}
编译程序并运行,我们可以看到程序的打印结果:
# gcc main.c
# ./a.out
score = 36.500000
temputure = 99.500000