单片机计算需要注意的问题
1、关于强制转换
U16 uwValue;
U32 result1;
U32 result2;
result1= (U32)uwValue * 800;
result2= (U32)(uwValue * 800)
使用C8051F392单片机在keil编译器中得到如下计算结果:
uwValue |
500 |
1000 |
10000 |
result1 |
0x61A80 |
0xC3500 |
0x7A1200 |
Result2 |
0x1A80 |
0x3500 |
0x1200 |
2、关于整形计算
对于整形数之间的计算,先乘再除与先除再乘之间的差别是很大的,因为整形之间相除会把小数部分省略。
如下程序及结果:
intm,n,x,y,z;
m=x*y/z;
n=x*