同样的程序,为什么结果不同?

2019-07-15 08:15发布

unsigned long H;
unsigned int a,b;


a=1500;
b=300;
H=a*2*b/1000;
------------------------------------
H=a*2;
H=H*b;
H=H/1000;
------------------------------------
为什么2个结果完全不同?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
灬今何在灬
2019-07-15 23:11
jf_43942235 发表于 2018-6-24 08:16
那为什么
H=(long)a*2*(long)b/1000;
或者

你这个问题有点搞笑了,前面这位前辈都跟你说过运算溢出的问题了,编辑器默认的情况下,运算值的堆栈存储空间是INT32位的,H=(long)(a*2*b)/1000;的优先级是a*2*b此时堆栈分配空间是32位,H=(long)a*2*(long)b/1000;堆栈空间是64位的,因为*的优先级默认稍微比/高一点,虽然运算是从左到右,但是他会先计算*的值再除,否则你还是不能得到你需要的结果。

一周热门 更多>