不同类型的变量

加入嵌入式技术QQ群:398294860,免费获取嵌入式技术文档,嵌入式最新学习路线指南,更多嵌入式教程,访问宅学部落淘宝店:https://wanglitao.taobao.com/

在实际编程中,我们可能会处理不同格式的数据、不同长短的数据、不同大小的数据。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

专门为嵌入式设计的C语言进阶视频教程:《C语言嵌入式Linux高级编程》,一共9期,涉及计算机体系结构、ARM汇编与反汇编、程序的编译链接原理、堆栈内存、Linux内核的面向对象编程思想、多任务编程、C语言的模块化编程等专题,具体课程详情可点击淘宝:C语言嵌入式Linux高级编程