Рубрики

C | Викторина С — 113 | Вопрос 1

#include <stdio.h>

  

int main()

{

    unsigned int i = 65000;

    while (i++ != 0);

    printf("%d", i);

    return 0;

}

(A) Бесконечный цикл
(Б) 0
(С) 1
(D) Ошибка времени выполнения

Ответ: (с)
Объяснение: Результат будет равен 1, но через очень долгое время, поскольку цикл while будет продолжаться до тех пор, пока я не получу 4294967295 (при условии, что unsigned int хранится с использованием 4 байтов), и, поскольку i максимальный предел для unsigned int равен 4294967295 в следующей операции ++, он станет ноль, и мы выйдем из цикла и 1 будет напечатан.

Поскольку на это уходит много времени, он-лайн компилятор может завершить программу с ошибкой превышения лимита времени. Если вместо unsigned int вы используете unsigned short int, то результат (1) может прийти быстрее.
Тест на этот вопрос

Рекомендуемые посты:

C | Викторина С — 113 | Вопрос 1

0.00 (0%) 0 votes