Рубрики

C | Макро и препроцессор | вопрос 2

#include <stdio.h>
#if X == 3

    #define Y 3

#else

    #define Y 5

#endif

  

int main()

{

    printf("%d", Y);

    return 0;

}

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

Ответ: (Б)
Объяснение: На первый взгляд вывод выглядит как ошибка времени компиляции, поскольку макрос X не был определен. В C, если макрос не определен, препроцессор назначает ему 0 по умолчанию. Следовательно, управление переходит к условной остальной части, и 5 печатается. Смотрите следующий вопрос для лучшего понимания.

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

C | Макро и препроцессор | вопрос 2

0.00 (0%) 0 votes