/ it Задачи / Найдите ошибку в коде

Найдите ошибку в коде

Найдите ошибку в коде

17 ноября 2016 в 16:45
Простая задача, но все же требует внимательности, а также знаний в программировании. Итак, я дам вам небольшой кусочек кода, а вы скажите в чем здесь ошибка.
Вот сам код:
unsigned int i;
for (i = 100; i >= 0; --i)
    printf("%d\n", i);
В этом коде есть две небольшие ошибки, которые вам стоит найти.

Ошибки

Первым делом, стоит обратить внимания на неправильное определения переменной i. Дело в том, что в данном случае оно является неверным. Тип unsigned int говорит о том, что значения этой переменной могут быть только цифры, при чем только положительные цифры без знака минус. Данная запись приводит к тому, что цикл будет выполняться вечно, так как условие всегда будет истинным (true)

Корректный код состоял бы из такого условия i > 0. Он мог бы вывести все значения, кроме нуля. Цикл завершился бы и тогда мы могли бы после самого цикла прописать еще и вывод 0. К примеру, у нас бы получилось нечто вроде этого:
unsigned int i;
for (i = 100; i > 0; --i)
    printf("%d\n", i);
printf("%d\n", i);
Вторая ошибка намного проще и заключается в том, что мы используем %d вместо того чтобы использовать %u. Поскольку мы выводим числа без минуса, то именно так должно все быть. В итоге у нас получился вот такой код, который верно выводит значения от 100 до 1:
unsigned int i;
for (i = 100; i > 0; --i)
    printf("%u\n", i);

Больше интересных новостей