先看两段代码:
代码1:
int head=0;
#define QUEUE_SIZE 10
head = (head++) % QUEUE_SIZE;
代码2:
int head=0;
#define QUEUE_SIZE 10
head++;
head = head % QUEUE_SIZE;
大家看以上两段代码,理论上,执行的效果是一样的。
我在Windows上仿真,代码1,是正常的。但是在嵌入式控制器上,执行结果就不对。
代码2在两个系统上,执行的结果都是对的。
为什么这样,就要分析反汇编结果了。我没有分析,有精力的小伙伴可以尝试分析下。