Двоичные числа. Ошибка при проверке, чтобы убедиться, что двоичный вход является двоичным - PullRequest
1 голос
/ 18 сентября 2010

Я пишу простой цикл, чтобы убедиться, что мой ввод является допустимым двоичным файлом. Пример: я хочу выдать ошибку, когда любое число больше единицы является пользовательским вводом. Я знаю, что мне нужно проверить по номерам ASCII. Что здесь происходит? Я не должен получать ошибку при вводе двоичного файла. Есть мысли?

for (int i=0;i<size;i++)
{
    printf("%i is string sub %i\n",int(binary[i]),i);
    if (int(binary[i]) != 48 || int(binary[i]) != 49)
    {
        printf("ERROR NOT A BINARY NUMBER\n");
        exit(0);
    }
}

ввод:

0101

Выход:

48 is string sub 0
ERROR NOT A BINARY NUMBER

Ответы [ 2 ]

6 голосов
/ 18 сентября 2010

Вам необходимо использовать if (int(binary[i]) != 48 && int(binary[i]) != 49) - note && вместо ||. На самом деле if(...) было фактически if(true), поскольку binary[i] не могло быть одновременно 48 и 49.

1 голос
/ 18 сентября 2010

Вы используете неправильный логический оператор.Если вы читаете оператор if вслух, это звучит так:

Выполните то, что находится внутри оператора if, если двоичный [i] не равен '0' ИЛИ, если он не равен '1'.

Как это может быть две вещи одновременно?

Использовать && вместо ||.

...