Рубрики

C | Макро и препроцессор | Вопрос 6

#include <stdio.h>
#define square(x) x*x

int main()

{

  int x;

  x = 36/square(6);

  printf("%d", x);

  return 0;

}

(А) 1
(Б) 36
(С) 0
(D) Ошибка компилятора

Ответ: (Б)
Объяснение: Препроцессор заменяет квадрат (6) на 6 * 6, и выражение становится x = 36/6 * 6, а значение x вычисляется как 36. Обратите внимание, что макрос также не будет работать для выражений «x = квадрат (6-2) »

Если мы хотим корректного поведения из макроса square (x), мы должны объявить макрос как

#define square(x) ((x)*(x))  

Тест на этот вопрос

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

C | Макро и препроцессор | Вопрос 6

0.00 (0%) 0 votes