STC单片机的加减乘除运算是2字节吗?
我写了一个宏定义:#define XXX (3*60*100)然后进行了运算。a = XXX - b;
但是求出来的a值是异常的。我将(3*60*100)替换成180000就可以运算出正确的结果。
所以:STC8H3K32S2单片机的加减乘除运算默认是按照2字节来的?怎样才能计算超过2字节呢?例如long*long的运算。
乘之前 强转一下试试
是的,默认 int 类型,
如 数据运算 溢出 (超出使用范围) , 请在 数字后加 L 或 l
将 默认 int 类型, 强致 转换 成 long 类型 进行运算 .
否则 运算结果出错 !
#define XXX (3*60*100)
改成 : #define XXX (3*60*100L) 即可
其他例子:
#defineFosc24
#defineOutFosc24*1000000L / 12 // 定时器输出频率(Hz)
当然, 初学者为求保险, 所有数字后面都加L 或 l (大小写都可), 也可. LAOXU 发表于 2023-12-20 05:18
#define XXX (3*60*100)
改成 : #define XXX (3*60*100L) 即可
看到你这么回复,终于有点明白为何例程中老是在MainFosc的数字后面加L了 好的,谢谢大家解答!谢谢!
页:
[1]