读书人

编写c的时候遇到一个小疑点郁闷

发布时间: 2012-02-03 22:02:47 作者: rapoo

编写c的时候,遇到一个小问题,郁闷,高手指点
long int i=32132121;
void show_shuzi()
{
if (i> 99999999) return;
wei[7]=i/10000000;
i=i-wei[7]*10000000;

wei[6]=i/1000000;
i=i-wei[6]*1000000;

wei[5]=i/100000;
i=i-wei[5]*100000;

wei[4]=i/10000;
i=i-wei[4]*10000;

wei[3]=i/1000;
i=i-wei[3]*1000;

wei[2]=i/100;
i=i-wei[2]*100;

wei[1]=i/10;
i=i-wei[1]*10;

wei[0]=i;
}

如上代码,主要是把那个长整型的每一位上的数字放到数组里,当i=32132121,很正确,但是当i=12345678时,wei[7]=1 wei[6]=2 wei[5]=3 wei[4]=4都很正常,但是wei[3]的时候,突然变成71了,我不知道这是什么原因,郁闷了很久,旺高手赐教。

[解决办法]
是不是类型转换的问题
10000000L,1000000L,100000L,10000L,.................
[解决办法]
编译器问题
我这里没问题

#include <math.h>
#include <stdio.h>
int main()
{
long int i=12345678;
int wei[8] ;
if (i> 99999999)
return 0;

wei[7]=i/10000000;
i=i-wei[7]*10000000;

wei[6]=i/1000000;
i=i-wei[6]*1000000;

wei[5]=i/100000;
i=i-wei[5]*100000;

wei[4]=i/10000;
i=i-wei[4]*10000;

wei[3]=i/1000;
i=i-wei[3]*1000;

wei[2]=i/100;
i=i-wei[2]*100;

wei[1]=i/10;
i=i-wei[1]*10;

wei[0]=i;

for(int i = 0; i < 8; i++)
printf( "%d ", wei[i]) ;

getchar() ;
return 1 ;
}

[解决办法]
我用KEIL调试了一下,没有问题,我的KEIL为7.08
[解决办法]
应该是编译器问题,我这里是正确的。
[解决办法]
可以改代码,适应你的编译器
先变成两个四位的,然后处理,就会正常

读书人网 >单片机

热点推荐