MSP430讨论区
返回
登录/注册
讨论一个乘法数学运算式与编译器处理问题
楼主
leon1235 于 2008-08-01 15:09:19
讨论一个乘法数学运算式与编译器处理问题
我的数学运算是为 (3985/4095)*2.5
答案算出来为0,好奇怪,我改成下面的样式还是不行,都是0
long aa;
aa= (long)3985/(long)4095*(long)2.5;
我使用的是f449(硬件乘法器有开没开都一样)
回复
1楼
hwdz 于 2008-08-01 15:19:56
你这个问题我没有试过,因为我总是尽量避免出现这样的运算,大多数情况下,我会变成这样的方法来写:
long aa;
aa = 4985 * 25 / 4095 / 10;
我写这种式子的原则就是,式中参数不带小数,先乘后除,注意防止溢出。
回复
2楼
leon1235 于 2008-08-01 15:45:17
[QUOTE][B]下面引用由[U]hwdz[/U]发表的内容:[/B]
你这个问题我没有试过,因为我总是尽量避免出现这样的运算,大多数情况下,我会变成这样的方法来写:
long aa;
aa = 4985 * 25 / 4095 / 10;
我写这种式子的原则就是,...[/QUOTE]
我改成你的方式就出現
Warning[Pe061]: integer operation result is out of range
回复
3楼
hwdz 于 2008-08-01 15:53:02
哦?莫非不支持long型变量了?
回复
4楼
leon1235 于 2008-08-01 15:57:16
long aa;
aa = (3985 * 25) / 4095 / 10;
我改成上面的樣子,就不會出錯,不過答案還是0
IAR為3.41版
回复
5楼
hwdz 于 2008-08-01 16:01:12
呵呵,我刚试了一下,比你的现象更牛一点,IAR告诉我
Warning[Pe550]: variable "aa" was set but never used D:\MyMCUPrg\TestMult\main.c 6
明明用了,说我的变量从来没用过,哈哈。
回复
1
2
3
4
电脑版
Page created in 0.0625 seconds width 2 queries.