请教各位C语言大师

来源:百度知道 编辑:UC知道 时间:2024/05/29 00:49:58
各位大师,小弟最近在用C语言对单片机编程时,出现了一个问题,想请教各位如何解决.
其中的部分问题程序如下:
if(a>80)
{ gain=1;P1=0x00;
}
else if(a>8)
{ gain=10;P1=0x01;
}
else if(a>0.8)
{ gain=100;P1=0x02;
}
else
{ gain=1000;P1=0x03;
}
a是long型数据,就因为其中的else if(a>0.8){ gain=100;P1=0x02;}指令,使得我的这个程序代码过长,无法编译,当我把这句指令删除时,代码大小马上减小了100Kb,马上就可以编译了,而且只要不删除这句指令,删去其他的再多指令还是代码过长,我不知道是什么原因,难道是long型数据与小数不可以比较吗?请教各位

既然a 是整数,为什么要去跟 0.8比? if (a >= 1)不是一样的么?

单片机多半是没有浮点支持的,浮点数的各种运算全要靠软件模拟, 所以只要有可能就千万别涉及到浮点数, 计算量和代码长度一下子就上去

这样行吗
if (a * 10 > 800) {
...
} else if (a * 10 > 80) {
...
} else if (a * 10 > 8) {
...
} else {
}