请教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); 运算结果就对了,
这是怎么回事呢
展开
 我来答
lycdl
高粉答主

2015-08-06 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4961万
展开全部
难道你程序真的这么写的?下面的三行也不是写在一个主函数里或者一个子函数里吗?最后一行竟然会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);
}
更多追问追答
追问
不好意思,是我没说清楚,前面有定义
#define uint unsigned int
#define uchar unsigned char
追答
你也没看明白,我没说uint和uchar,我知道前面有定义。
我问的是后面三行,那计算赋值语句,就像你那么写的,肯定是不行,要写要主程序中或者写在子函数中的。
都给写出来,那么写,编译是通过的,这都看不明白呀。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式