关于Keil仿真软件的错误

[复制链接]
2475|5
 楼主| tchwwf 发表于 2012-7-23 15:45 | 显示全部楼层 |阅读模式
我用Keil 模拟仿真:
uchar i;
ulong SN,SN_MEM;
如果程序是这样的赋值语句。
SN=70000;   这时鼠标点在SN上显示 SN=0x00011170   ;用计算器也是此值。

但是如果程序是这样
i=7 ;
SN=i*10000;   这时鼠标点在SN上显示 SN=0x00001170

不知道是什么原因?那位老兄能帮我解答一下。
不起眼 发表于 2012-7-23 16:13 | 显示全部楼层
SN=i*10000L就可以了。
    这是因为keil C 的常数缺省类型是整数int.
      按照C 语言类型装换规则   uchar*int  时, uchar应转换成int,且结果为int, 此时高位被丢弃。
                             ulong=int 时,  int转换成ulong.
ayb_ice 发表于 2012-7-23 17:12 | 显示全部楼层
不要动不动就怀疑这有问题,那有问题,
多怀疑怀疑自己的程序
dlyt_test001 发表于 2012-7-24 14:40 | 显示全部楼层
注意数据类型,一个好的习惯是加上强制转换。
SN = ((ulong)i )* ((ulong)10000);
gtekled 发表于 2012-7-24 17:11 | 显示全部楼层
不是很懂程序,来学习下!
 楼主| tchwwf 发表于 2012-7-27 09:36 | 显示全部楼层
多谢 “不起眼” 和 “dlyt_test001”。:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

39

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部