STM32 写算法表达式时遇到强制转换时产生错误结果的疑问?

2019-12-20 21:30发布

最近写了一个算法公式。尝试了三种写法。如些
int32_t T;
int32_t dT;     //这个数值为378021
uint16_t C[8]; //C[6]数值为27784
//情况1
        T = ((int64_t) dT * C[6]) ;  //调试的时候,此时T=1913000872
        T= T/8388608;                 //调试的时候,此时T=228
//情况2
        T = ((int64_t) dT * C[6]) / 8388608;  //调试的时候,此时T=1252
//情况3
        T = ((int64_t) (dT * C[6])) / 8388608;  //调试的时候,此时T=228

结果情况2,算出来T是错误的。这是为何?求高手指教。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。