单片机c语言数据类,C语言与单片机-6-数据类型2

在C51编程中,使用的最多就是整型数据,我们今天讨论一下char,以及修饰符unsigned 。

char 型数据的存储空间是8bit位,最高位是符号位。我们就知道他的表达数据范围-128-127之间。也就是小于-128的整型数据与大于127的整型数据超过了char型数据的表示范围。是不能表示的。

我通过简单代码验证一下:

char   x=120;

x=x+10;

printf("x=%i",x);

这段代码的输出会输出x=130吗?不会的,在VC中输出了x=-126.所以在程序设计时声明变量使用时一定要注意到变量表表达的范围。下面我们分析一下出错的原因。

120+10=130,130的二进制表示1000,0010。最高为是1表示复数。好像与-126没什么关系。我们来看看126的补码,126的二进制数据是0111,1110。按位取反1000,0010,加1。也就是整型数据的复数是按照补码存储的。这是上溢出,自己动手可以试验一下下溢出。看看结果会不会出错。

ungsigned char 是8位无符号char型数据,符号位也可以用来存储数据,这就可以最大存储255的值,最小0.也就值的范围是0~255.这在单片机编程中非常有用。因为单片机的IO寄存器基本都是8位。如果需要向某个寄存器赋值,使用这种数据结构刚合适。比如:

unsigned char x=0xaa;

P1 = x;

我们改写一下前一段代码

unsigned char   x=120;

x=x+10;

printf("x=%i",x);

在VC中输出准确结果x=130.

在自然界中有些值不可能是负值,比如树上的苹果。所以选择   unsigned char  数据比较合适。比如人的年龄,使用char数据来表示可能会出错的,因为127岁以上人也许有。但是255岁以上的人也许没有。

了解char数据,我们只要明白char数据存储空间即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值