PICC编译器问题

2020-02-09 11:46发布

各位好!今天用了一下PIC单片机写了个C程序出现了一些奇怪的现象,请高手讲解,谢谢!

我要显示的是个位数字,money_count和dis_money_symbol是全局变量,display_table 定义为
const unsigned char display_table[10]={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99};
我在查表的时候这样写
dis_money_symbol=display_table[money_count%10];
运行这个语句后程序尽然跑到其它地方去了,跑到一个其它函数里面。但我定义一个局部变量temp,temp=money_count%10;
这样就OK了,不知道是何原因,按照C语法,money_count%10也会赋值给一个局部变量呀!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
portx
2020-02-09 21:29
%10的意思是除以十进制10并取余数,编译器在处理整数除法运算的时候多数会使用先左移位5次,即乘以10然后进行除法运算,当你的char变量左移5次的时候会导致char的溢出,所以会丢失高位数据导致运算结果不正常

一周热门 更多>