Ответ 1
остаток от 3/7 равен 3. Когда он пошел 0 раз с 3 остатками, так что 3% 7 = 3
7 % 3 = 1 (remainder 1)
как сделать
3 % 7
(остаток?)
работа?
остаток от 3/7 равен 3. Когда он пошел 0 раз с 3 остатками, так что 3% 7 = 3
То же самое. Фактор равен 0 (3/7 с отбрасыванием дробной части). Остальное тогда удовлетворяет:
(a / b) * b + (a % b) = a
(3 / 7) * 7 + (3 % 7) = 3
0 * 7 + (3 % 7) = 3
(3 % 7) = 3
Это определено в C99 § 6.5.5, Мультипликативные операторы.
7 переходит в 3? нулевое время с 3 слева.
равен нулю. Остаток (модуль) равен 3.
7, деленная на 3, равна 2 с остатком 1
3, деленная на 7, равна 0 с остатком 3
Пока они оба позитивны, остаток будет равен дивиденду. Если один или оба отрицательны, то вам напомнят, что %
- действительно оператор останова, а не оператор модуля. Модуль всегда будет положительным, но остаток может быть отрицательным.
(7 * 0) + 3 = 3
; поэтому остаток 3
.
a% q = r означает, что существует x, так что q * x + r = a.
Итак, 7% 3 = 1, потому что 3 * 2 + 1 = 7,
и 3% 7 = 3, потому что 7 * 0 + 3 = 3
Концептуально, я думаю об этом так. По определению ваш дивиденд должен быть равен (quotient * divisor) + modulus
Или, решая для модуля: modulus = dividend - (quotient * divisor)
Всякий раз, когда дивиденд меньше дивизора, фактор всегда равен нулю, что приводит к тому, что модуль просто равен дивиденду.
Чтобы проиллюстрировать значения OP:
modulus of 3 and 7 = 3 - (0 * 7) = 3
Чтобы проиллюстрировать другие значения:
1 % 3:
1 - (0 * 3) = 1
2 % 3:
2 - (0 * 3) = 2