本帖最后由 uc_stm32f050 于 2012-2-23 09:51 编辑
还是你的代码有问题
lost1421 发表于 2012-1-16 15:57 
楼主完全是想当然。
long i;
i=14716*32;
楼主自以为i是long型,那么14716*32就按long来运算。
楼主太想当然了。
是不是 float i;
i=14716/32;
14716/32 就按float运算。
i=14716*32;
是先计算14716*32,再把结果赋值给i。
无论i是什么类型,都不会影响到 14716*32的结果。
(这好比A=B,A的类型能影响B的值吗?)
再说 14716*32
14716,32都没有后缀,类型是int,
楼主自己去算 ((int)14716) * ((int)32)
正确写法:
long i;
i=14716L*32L;
加个后缀L,表示14716L,32L都是long的内型。
这样运算才不会溢出。 |