十进制转换二进制的C程序

来源:百度知道 编辑:UC知道 时间:2024/06/01 13:01:39
#include<stdio.h>
main()
{
int a[16]={0},x,i;
scanf("%d",&x);
for(i=0;x!=0;i++)
{
a[i]=x%2;
x=x/2;
}
for(;i>=0;--i)
printf("%d",a[i]);
}
为什么我最后输出的结果第一位总是0呢

#include<stdio.h>
main()
{
int a[16]={0},x,i;
scanf("%d",&x);
for(i=0;x!=0;i++)
{
a[i]=x%2;
x=x/2;
}
for(;--i>=0;)
printf("%d",a[i]);
}

因为最后一次,判断X是不是等于0之前,其实不i还有加了一次了,因此,i的值其实是越界了,所以要先减1再判断,再输出