同样的程序,dev c可以很好执行,keil5却出问题。
#include "stdio.h"
int main(){
int n = 15;
int qtiB = 0;
while(n>0)
{
if(n%2)
{
qtiB = qtiB*10+1;
}
n = n/2;
}
printf("%d", qtiB);
}
num = qtis/2;
while(num>0)
{
if(num%2 != 0)
{
qtiB = qtiB*10+1;
}
num = num/2;
}
UARTprintf("qti:%d\n",qtiB);

问题定位于qtiB = qtiB*10+1;这句话。
猜测由于keil5对代码进行优化导致的。
探讨了同一程序在DEVCC与KEIL5编译器下执行表现不同的问题,聚焦于代码优化可能导致的qtiB=qtiB*10+1运算错误,深入分析了编译器优化级别对程序运行的影响。
2853

被折叠的 条评论
为什么被折叠?



