在STC15单片机 的C语言编程,变量定义支持长整型 long int 和无符号长整型 unsigned long 。
蓝桥杯编程训练中,有同学咨询keil 编程时,定义了无符号长整型数据,但是结果不是预期结果,询问原因,搜索了一下,有博主给出了解决方法,这里做一个记录。
出现问题的地方
设计了一个简单的程序,对问题进行的研究
int main()
{
long int k = 654321;
unsigned long l = 654321;
unsigned long h,w;
h = 22*3600;
w = (unsigned long)22 * (unsigned long)3600 ;
while(1);
}
进入软件调试界面,添加变量到watch窗口,查看数值结果:
变量定义并初始化,不管是有符号长整型数据还是无符号长整型数据,和系统计算器的结果一致。
但是如果将数据进行乘法运算时,不能得到预期结果,应该是Keil 编译器不会将数据变成长整型数据,解决办法是,将数据先强制转换为无符号长整型之后,再做乘法运算,就可以得到预期结果了。
参考博客链接:
【解决】Keil4 STC15乘法、除法、浮点型(double\float)计算结果不正确 解决办法_stc硬件乘法-优快云博客