为了得到可靠的数据,我们直接让编译器告诉我们,在8为单片机开发环境中输入以下代码:
#include<stdio.h>
main()
{
printf("char:%d\n",sizeof(char));
printf("short:%d\n",sizeof(short int));
printf("int:%d\n",sizeof(int));
printf("long:%d\n",sizeof(long));
printf("long int:%d\n",sizeof(long int));
printf("float:%d\n",sizeof(float));
printf("double:%d\n",sizeof(double));
}
输出:
char:1
short:2
int:2
long:4
float:4
double:4
而在一部32位的计算机上,这个结果是:
char : 1
short : 2
int : 4
long : 4
float:8
double : 8
注:int型数据所占内存与cpu位数相同,如32位单片机系统中整型就是32位
由此可知8位单片机中数据类型所占字节位数为:
无符号字符型(unsigned char):0-255 8位
有符号字符型(char):-128-127 8位
无符号整型(unsigned int): 0-65535 16位
有符号整型(int):-32768-32767 16位
有符号长整型(unsigned long int)32位
无符号长整型(long int):32位
浮点型(float:32位)
双精度浮点型(double):32位
为了防止程序在不同位数的cpu上出现不可预料的问题,然后我们就可以这样定义宏:
typedef unsigned char uint8; // 无符号8位整型变量
typedef signed char int8; // 有符号8位整型变量
typedef unsigned short uint16; // 无符号16位整型变量
typedef signed short int16; // 有符号16位整型变量
typedef unsigned long uint32; // 无符号32位整型变量
typedef signed long int32; // 有符号32位整型变量
typedef float fp32; // 单精度浮点数(32位长度)
typedef unsigned char bool; //布尔型
发表评论
抢沙发~