找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4797|回复: 0
收起左侧

C语言数据类型及强制转换(待补充)

[复制链接]
ID:105323 发表于 2016-2-12 19:18 | 显示全部楼层 |阅读模式
typedef signed   char  s8;
typedef unsigned char  u8 ;
typedef signed   int  s16;
typedef unsigned int   u16;
typedef signed   long s32;
typedef unsigned long  u32;

  以上列出了常用的数据类型,在IAR编译器中,char默认的是unsignedchar,这点要注意,下例说明这个问题:
例1:
char a=5,b=6,c=0;
c=a-b;
结果c=255,显然c是unsigned char,于是将char换成signed char,得到结果为-1;

例2:(强制类型转换)
u16 a=30000,b=50000,c=10000;
u32 d=0;
d=a+b+c;
结果24464,因为unsignedchar最大值65535,a+b+c超出了65535,所以90000-65536=24464;
改为d=(u32)a+(u32)b+(u32)c,结果90000,由于强制将每个u16型转化为u32型,故不存在溢出的问题



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表