stm8 乘法运算出错
unsigned long int Vcc;main()
{
while (1)
{
Vcc = 1024*250;
}
}
vcc出来的结果为什么不是256000,而是4294961152
环境是ST Visual Develop + Cosmic 4.2.4
你的优化模式是什么 STM8+COMIC,烂得要死,乘法好烂,有时出现莫名其妙的问题。可以用250左移10看看呗。 换个其他的编译器试试呢。如果是编译器的问题,就不用死等了,换编译器就行了。 你可以按16进制查看这两个数据就会发现一个是0xFFFFE800(4294961152),一个是0x3E800(256000),有没有觉得它是溢出了呢?或者你可以输出一下stm8下的long int占用几个字节. 5楼应是正解!
可以试试:
Vcc = 1024UL*250UL; 用Vcc = 1024UL*250UL;结果正确了,感谢大家 额,以前都没注意,这样的一个乘法都会被优化啊 如果后续用到了vcc,应该会有正确结果 还是用IAR吧。好用得多。
页:
[1]
2