|
void BUG(double value, unsigned char *str, unsigned char cnt)
{
static unsigned char i;
static unsigned int n;
n = (unsigned int)value;
value -= n;
for(i = 0; i < cnt; i++)
{
value *= 10;
}
n = (unsigned int)value; //运行至此,value 等于4,对n赋值后,n却等于3
}
unsigned char AA[20];
int main(void)
{
BUG(1.4,AA,1);
for(;;){}
}
运行BUG函数,在函数最后一行断点,发现 value 等于4,但是 n值为3 !!!!!! ,编译器5和6 均有同样问题
|
|