编写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
[解决办法]
应该是编译器问题,我这里是正确的。
[解决办法]
可以改代码,适应你的编译器
先变成两个四位的,然后处理,就会正常