KeilC51数据类型转换
时间:11-10
来源:互联网
点击:
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方法,即,在可能发生数据溢出时,进行强制类型转化。
例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方法,即,在可能发生数据溢出时,进行强制类型转化。
KeilC51数据类型转 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)