请教C51单片机编程问题,这是什么原因呢
这些s=cc/mt;ct=(uchar)(cd/s);//出错ct=(uchar)((cd*mt)/cc);//OK是从函数里抽出来的,s=cc/mt;ct=(uchar...
这些
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); 运算结果就对了,
这是怎么回事呢 展开
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); 运算结果就对了,
这是怎么回事呢 展开
1个回答
展开全部
难道你程序真的这么写的?下面的三行也不是写在一个主函数里或者一个子函数里吗?最后一行竟然会OK?在说笑话吧。
这样,就能编译通过的。
unsigned int mt;
unsigned char cc,cd,ct;
float s;
void cdt()
{
s=cc/mt;
ct=(unsigned char)(cd/s);
ct=(unsigned char)((cd*mt)/cc);
}
main()
{
cdt();
while(1);
}
这样,就能编译通过的。
unsigned int mt;
unsigned char cc,cd,ct;
float s;
void cdt()
{
s=cc/mt;
ct=(unsigned char)(cd/s);
ct=(unsigned char)((cd*mt)/cc);
}
main()
{
cdt();
while(1);
}
更多追问追答
追问
不好意思,是我没说清楚,前面有定义
#define uint unsigned int
#define uchar unsigned char
追答
你也没看明白,我没说uint和uchar,我知道前面有定义。
我问的是后面三行,那计算赋值语句,就像你那么写的,肯定是不行,要写要主程序中或者写在子函数中的。
都给写出来,那么写,编译是通过的,这都看不明白呀。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询