winnie 发表于 2009-4-15 10:30:39

C语言数学运算!

#include <pic.h>
volatile unsigned int hl,svhl;
volatile unsigned long timer;
main ( )
{hl=78;   
hl=hl*20; //此时hl的值为0618(hex),转为十进制为1560,仿真运行结果正确.
timer=hl*3600;//此时timer的值为0000B180(hex),正确结果为0055b180.
}
通过以上程序仿真运行,发现timer的高四个字节为零.正确结果应该为55B180(16进制),转为十进制为5616000.而
通过观察变量timer的值,发现timer=0000B180.
即78*20=1560,1560*3600=561600.

winnie 发表于 2009-4-15 10:30:46

unsigned int类型的数据最大值为65535,很显然你的数据超界了。用long型试试。
页: [1]
查看完整版本: C语言数学运算!