单片机中的数据类型

单片机中的数据类型

尽管单片机基本都是使用C语言来进行编程,但是由于单片机本身分为8位、32位等,这会导致针对不同单片机编程时对不同数据类型的数据长度定义有区别。本文来分辨这些区别。

不同单片机平台数据类型字节长度的对比

名称 数据类型 8位单片机 数据范围 格式化符 32位单片机 数据范围
布尔型 _Bool 1 -128 到127 %bd 1 -128 到127
整型 int 2 -32,768 到 32,767 %d(%hd) 4 -2,147,483,648 到 2,147,483,647
有符号整型 signed int 2 -32,768 到 32,767 %d 4 -2,147,483,648 到 2,147,483,647
无符号整型 unsigned int 2 0 到 65,535 %d 4 0 到 4,294,967,295
字符型 char 1 -128 到127 %bd 1 -128 到127
长整型 long 4 -2,147,483,648 到 2,147,483,647 %ld 4 -2,147,483,648 到 2,147,483,647
单精度浮点 float 4 1.2E-38 到 3.4E+38 (6位有效位) %f 4 1.2E-38 到 3.4E+38 (6位有效位)
双精度浮点 double 4 1.2E-38 到 3.4E+38 (6位有效位) %f 8 2.3E-308 到 1.7E+308 (15位有效位)

注:在C51中,Keil扩展了b、h、l来对应字节宽度,其中b代表八位、h十六位(默认)、l三十二位。

正是有上述区别,一般我们在编程时会对数据类型进行重新定义,定义为uint8_t、uint16_t、uint32_t等,就是为了方便提醒数据长度,放置编程时数据长度不够产生错误。

Leave a Reply

Your email address will not be published. Required fields are marked *