Может кто-нибудь объяснить логику этого кусочка кода? - PullRequest
0 голосов
/ 16 февраля 2019

Я запустил его через IDE, и остальные значения вышли 3, 2, 0, 1. Я понимаю первый остаток, но не остальные.Кроме того, как получается, что цикл заканчивается?Разве х не всегда будет больше 0, поэтому продолжается бесконечно?Спасибо.

int x = 1023;

while (x > 0)
 {
   printf("%d", x% 10);
   x = x /10;
 }

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Обратите внимание, что в C, когда оба операнда деления имеют целочисленный тип, деление также имеет целочисленный тип, и значение является результатом деления , округленного до нуля .

Таким образом, в первой итерации оператор x = x /10; изменяется x с 1023 на 102 (не 102.3).

0 голосов
/ 16 февраля 2019

поскольку вы делите целые числа, вы получаете округленные результаты каждый раз,

, поэтому каждая итерация x становится

102

10

1

Просто напечатайте x каждый раз, и вы увидите.Таким образом, 102 по модулю 10 равно 2

10, по модулю 10 10 - 0

1 по модулю 10 - 1

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