0
for(i = 0; bitstr[i] != '\0'; i++){
    if(!(bitstr[i]=='0' || bitstr[i]=='1')){
        printf("Not a valid bitstring!");
        exit(0);
    }
    else{
        sum = sum*2+bitstr[i];
    }
}
printf("%d", sum);

たとえば、101 を入力すると、339 が出力されますが、答えとして 5 が出力されるはずです。何が間違っているのかわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

5

これは、'1'およびが整数値ではなく'0'文字'1'およびであるためです。数値を取得するには、それらから'0'減算する必要があります。'0'

sum = sum*2+(bitstr[i]-'0');
于 2013-09-15T01:33:18.430 に答える