EDN首页   博客首页 用户登陆  |  注册

日志档案

发表于 2007/12/11 15:43:13

1

标签: 无标签

KeilC51数据类型转换应注意

1、/*06-03-31在KEIL中调试发现*/
   例1:
 ......
 unsigned long int b;
 unsigned int x;
 x=968;
 b=100*x;
 b=96800-65536;
   例2:
 ......
 unsigned long int b,x;
 x=968;
 b=100*x;
 b=96800;
   例3:
 ......
 unsigned long int b;
 unsigned int x;
 x=968;
 b=(unsigned long int)(x)*100;
 b=96800;
   结论:在使用KEIL C51中进行复杂数学运算时,特别是在运算表达式左右两边的数据类型不同时,一定要注意变量(寄存器)字节长度变化问题,必要是要进行强制类型转化,以免造成数据溢出。如上例1中,数据就发生了溢出;而例2和例3则不会发生这种现象,但例2编译后生成的代码要远多于例3,因此一般宜使用例3方法,即,在可能发生数据溢出时,进行强制类型转化。

系统分类: 单片机   |   用户分类: 单片机   |   来源: 转贴   |   【推荐给朋友】   |   【添加到收藏夹】

阅读(746)  |  评论(0)  |  收藏(0)  |  举报  

投一票您将和博主都有获奖机会!