打印

关于Keil仿真软件的错误

[复制链接]
1798|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);

使用特权

评论回复
5
gtekled| | 2012-7-24 17:11 | 只看该作者
不是很懂程序,来学习下!

使用特权

评论回复
6
tchwwf|  楼主 | 2012-7-27 09:36 | 只看该作者
多谢 “不起眼” 和 “dlyt_test001”。:handshake

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

39

帖子

1

粉丝