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

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3966|回复: 1
打印 上一主题 下一主题

C语言数学运算!

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-15 10:30:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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.
2#
 楼主| 发表于 2009-4-15 10:30:46 | 只看该作者
unsigned int类型的数据最大值为65535,很显然你的数据超界了。用long型试试。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-27 22:54 , Processed in 0.051237 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表