Оператор модуля в с - PullRequest
       0

Оператор модуля в с

0 голосов
/ 30 декабря 2011

Мне нужно проверить делимость числа в c.Как я могу использовать модуль operatpr в C, чтобы проверить, делится ли число на другое число?Я попытался сделать это:

if (file_int % 3) {
    printf("Hoppity \n");
}

Не сработало, хотя file_int равно 9.

Что я сделал не так?

Спасибо

Ответы [ 5 ]

7 голосов
/ 30 декабря 2011

Не сработало, потому что операция вернет 0, что будет считаться ложным.

Вам действительно нужно:

if(!(file_int % 3)) {
    printf("Hoppity \n");
}
3 голосов
/ 30 декабря 2011

if (file_int % 3) совпадает с if (file_int % 3 != 0), что противоположно тому, что вы хотите.

if (file_int % 3 == 0) {
    printf("Hoppity \n");
}
// or
if (!(file_int % 3)) {
    printf("Hoppity \n");
}
1 голос
/ 30 декабря 2011

, потому что если он делится на 3 file_int % 3, он будет равен 0, а блок if не будет выполняться.

Попробуйте

if(file_int % 3 == 0) {
    // do stuff
}
1 голос
/ 30 декабря 2011

Если результат модуля равен 0, он делится равномерно. Может показаться, что вы ожидаете, что он не будет делиться на 3 для продолжения цикла, хотя вашего фрагмента кода недостаточно для уверенного принятия ваших намерений.

0 голосов
/ 30 декабря 2011

Оператор mod возвращает остаток, полученный в результате деления ..., поскольку 9 делится на три без остатка, возвращаемое значение будет равно нулю.

Однако условные выражения оцениваются как true, если они не равны нулю,ложь, если ноль.Вам нужно изменить его на (file_int % 3 == 0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...