Оператор мода (%) в С с большим делителем, чем дивиденд

Вот мой пример кода на C:

int x, y;
x = 7 % 10;
y = 10 % 7;
printf("%d, %d", x, y);

Это печатает: 7, 3

я понимаю 10 % 7 = 3,

Я не понимаю 7 % 10 = 7,

Я попробовал тот же код, используя переменную с плавающей точкой и получил тот же ответ. Как работает мод, когда делитель больше, чем дивиденд? Мне бы очень хотелось принципиально понять, как использовать этот оператор.

3 ответа

Модуль возвращает остаток после деления.

7% 10 = 7, потому что 7 / 10 < 1, например, 10 не подходит ни разу в семь. Таким образом, все значение 7 становится остатком.

10 % 7 = 3 это потому что 10 / 7 является 1, 1 * 7 + 3 = 10следовательно, 3 - это остаток.

7 % 10 = 7 это потому что 7 / 10 является 0, 0 * 10 + 7 = 7следовательно, 7 - это остаток.

C11 6.5.5 Мультипликативные операторы

Пункт 5:

Результатом оператора / является частное от деления первого операнда на второй; результат оператора% - остаток. В обеих операциях, если значение второго операнда равно нулю, поведение не определено.

Пункт 6:

Когда целые числа делятся, результатом оператора / является алгебраическое частное с любой отброшенной дробной частью.105) Если частное a/b представимо, выражение (a/b)*b + a%b должно быть равно a; в противном случае поведение как a/b, так и% b не определено.

Итак, здесь 7, деленное на 10 - это 0 с остатком 7.

Другие вопросы по тегам