为什么“标志== 0”条件始终为真?

时间:2019-07-18 02:26:33

标签: c

你能帮我吗?我不明白为什么flag == 0的条件总是正确的。抱歉,如果我发布的内容有误,但我在社区和编程界都是新手

int main(){

    const int max = 24;

    char binario[max];
    int i,j;
    double decimale;
    int lung_binario;
    int flag;



    printf("Inserisci un numero binario: ");
    gets(binario);

    lung_binario = strlen(binario);


    printf("Il numero binario inserito e': %s e contiene %d cifre.\n", binario, lung_binario);

    decimale = 0;

    flag = 0;

    for(i = 0; i < lung_binario; i++){
        if (binario[i] != '0' && binario[i] != '1'){
            flag = 1;
        }
    }

    if(flag == 1){
        printf("Errore!!");
    }
    else if (flag == 0){
        j = lung_binario - 1;
        for(i = 0; i < lung_binario; i++) {
            if (binario[i] == '1') {
                decimale = decimale + pow(2, j);
            }
            j--;
        }
    }

    printf("Il numero decimale e': %.0lf", decimale);

    return 0;
}

1 个答案:

答案 0 :(得分:-4)

我认为这是因为您应该假设binario数组是二进制的;即它仅包含0和1。该代码将二进制转换为十进制,当然,如果binario包含的数字不是0或1,则它不是有效的二进制,因此无法将其转换为十进制。