这些
s=cc/mt;
ct=(uchar)(cd/s); //出错
ct=(uchar)((cd*mt)/cc); //OK
是从函数里抽出来的,
s=cc/mt;
ct=(uchar)(cd/s); 运算结果不对,
而换成ct=(uchar)((cd*mt)/cc); 运算结果就对了,
这是怎么回事呢
不好意思,是我没说清楚,前面有定义
#define uint unsigned int
#define uchar unsigned char
你也没看明白,我没说uint和uchar,我知道前面有定义。
我问的是后面三行,那计算赋值语句,就像你那么写的,肯定是不行,要写要主程序中或者写在子函数中的。
都给写出来,那么写,编译是通过的,这都看不明白呀。
明白你的意思,那几句是从函数里抽出来的,编译是能通过,但二者算出来的结果不一样,不知道这是什么原因,还望不吝赐教,谢谢!
追答问题出在这行:s=cc/mt;
因cc,mt都不是浮点数,计算的结果s是0。
对于keilc,这种浮点数计算,参加运算的数都是浮点数才行。