Рубрики

Викторина С — 105 | Вопрос 3

Что произойдет, когда мы скомпилируем и запустим эту программу?

#include "stdio.h"

int main()

{

  int i; 

  goto LOOP;

  for (i = 0 ; i < 10 ; i++)

  {

     printf("GeeksQuiz\n");

     LOOP:

      break;

  }

  return 0;

}

(A) Нет ошибки компиляции, и он напечатает GeeksQuiz 10 раз, потому что goto label LOOP не вступит в силу.
(B) Нет ошибки компиляции, и он напечатает GeeksQuiz только один раз, потому что goto label LOOP появится на картинке только после ввода цикла for.
(C) Ошибка компиляции, потому что любая метка goto не разрешена в цикле for в C.
(D) Нет ошибки компиляции, но поведение программы будет зависеть от компилятора C из-за недетерминированного поведения оператора goto.
(E) Нет ошибки компиляции, и она ничего не напечатает.

Ответ: (E)
Объяснение: оператор goto может использоваться внутри функции, а его метка может указывать на любое место в одной и той же функции. Здесь для циклических выражений, т.е. i = 0 и i <10, i ++ вообще не будет выполняться. Потому что goto заставит программу перейти непосредственно в цикл for. И оттуда он выполнит оператор break, который выйдет из цикла. Так что фактически ничего не будет напечатано.
Тест на этот вопрос

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

Викторина С — 105 | Вопрос 3

0.00 (0%) 0 votes