89C51 C程序 遇到怪问题

[复制链接]
3158|7
 楼主| 8086 发表于 2011-5-17 06:48 | 显示全部楼层 |阅读模式
unsigned long int z;
unsigned int mc;


mc=200;
z=mc*1000;


z的结果竟然是34464,并且发现Z的结果不能大于34464,否则就等于34464
unsigned long int 型变量最大可以到4294967295的阿?
dqyubsh 发表于 2011-5-17 07:19 | 显示全部楼层
强制类型状换,让乘数和被乘数都变成4位(unsigned long)类型的,结果才能确保是4位的。

大致这样:z=(unsigned long)mc*1000;

评分

参与人数 1威望 +3 收起 理由
8086 + 3

查看全部评分

ningling_21 发表于 2011-5-17 07:37 | 显示全部楼层
改为:
mc=200;
z=mc;
z=z*1000;
也可以,两边的类型要保持一致

评分

参与人数 1威望 +3 收起 理由
8086 + 3

查看全部评分

ayb_ice 发表于 2011-5-17 08:31 | 显示全部楼层
这是C的基本问题

评分

参与人数 1威望 +3 收起 理由
8086 + 3

查看全部评分

 楼主| 8086 发表于 2011-5-17 09:53 | 显示全部楼层
谢谢2楼、3楼。

这样程序会慢一些是吧?
Linda_008 发表于 2011-5-18 23:12 | 显示全部楼层
参数传递类型保持一致才是最重要,
速度差不了多少的,
参数类型不一致辞,在以后的函数调用中会吃很多苦头的

评分

参与人数 1威望 +3 收起 理由
8086 + 3

查看全部评分

HORSE7812 发表于 2011-5-24 11:59 | 显示全部楼层
平台的特点,呵呵,没办法,靠经验了。
delin17 发表于 2011-5-24 13:32 | 显示全部楼层
7# HORSE7812

这不是平台特点,C很容易有这问题的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

47

帖子

0

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