8位单片机中数据类型所占字节位数

为了得到可靠的数据,我们直接让编译器告诉我们,在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; //布尔型

发表评论

[/0o0] [..^v^..] [0_0] [T.T] [=3-❤] [❤.❤] [^v^] [-.0] [!- -] [=x=] [→_→] [><] 更多 »
昵称

抢沙发~