英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

标题: C语言数学运算! [打印本页]

作者: winnie    时间: 2009-4-15 10:30
标题: 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
unsigned int类型的数据最大值为65535,很显然你的数据超界了。用long型试试。




欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/) Powered by Discuz! X3.2