首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2012-02-03 
编写c的时候,遇到一个小问题,郁闷,高手指点longinti32132121voidshow_shuzi(){if(i 99999999)returnwe

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

热点排行