Рубрики

C | Петли и структура управления | вопрос 2

#include <stdio.h>
#define PRINT(i, limit) do \

                        { \

                            if (i++ < limit) \

                            { \

                                printf("GeeksQuiz\n"); \

                                continue; \

                            } \

                        }while(0)

  

int main()

{

    int i = 0;

    PRINT(i, 3);

    return 0;

}

Сколько раз GeeksQuiz печатается в вышеуказанной программе?
(А) 1
(Б) 3
(С) 4
(D) Ошибка времени компиляции

Ответ: (А)
Объяснение: Если макрос нужно развернуть в несколько строк, лучше всего писать эти строки в do {} while (0), чтобы избежать побочных эффектов макроса. После того как GeeksQuiz напечатан один раз, элемент управления достигает оператора while, чтобы проверить условие. Поскольку условие ложно, цикл прерывается.

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

C | Петли и структура управления | вопрос 2

0.00 (0%) 0 votes