今日在8位单片机中做乘除运算,简化代码如下
unsigned char a = 100;
unsigned char b = 120;
unsigned char result = 0;
result = a*b/120;
printf("result = %d", result);
以上代码在x86中运行无误,但在8位单片机中:
如果操作数高于8位,或者运算过程中产生了高于8位的数,易产生错误。
例如 100*200 > 256 已经超过8 bit.
所有操作数定义的数据类型,必须足以保存运算过程中产生的最大数值。
|