关于基本对话,我在阵列方面遇到了麻烦

时间:2015-12-31 07:34:09

标签: c

此程序的目的是基本转换。它旨在将基数2转换为基数10.当我执行代码时,程序终止而没有任何错误消息。

我的代码出了什么问题?

main()    
{         
    int binary[25];    
    int counter_1;    
    int sum=0;    
    int counter_2=0;

    printf("enter the binary digits:");

    for(counter_1=0;binary[counter_1]==0 || binary[counter_1]==1;++counter_1)
    {
        scanf("%d",&binary[counter_1]);
    }
    for( ;counter_1>=0;counter_1--)
    {
        sum=sum+(pow(2,counter_2)*binary[counter_1]);
        counter_2=counter_2+1;
    }
    printf("your binary digits is equivalent to %d in decimal base.",sum);
}

1 个答案:

答案 0 :(得分:4)

在初始化阵列之前,您正在访问阵列的内容。您的程序受到不确定的行为。

for(counter_1=0;binary[counter_1]==0 || binary[counter_1]==1;++counter_1)
                // ^^^ accessing uninitialized value

要读取数组中每个元素的二进制数(1或0),您可以使用:

for(counter_1=0; counter_1 < 25; ++counter_1)
{
   scanf("%d", &binary[counter_1]);
   if ( binary[counter_1] != 0 && binary[counter_1] != 1 )
   {
      break;
   }
}