Рубрики

Выход программы | Используйте макросы осторожно!

Спрогнозировать вывод программы ниже

#define square(x) x*x

int main()

{

  int x;

  x = 36/square(6);

  printf("%d",x);

   

  getchar();

  return 0;

}

Выход: 36

Объяснение:
Препроцессор заменяет квадрат (6) на 6 * 6, и выражение становится x = 36/6 * 6, а значение x вычисляется как 36. Если мы хотим корректного поведения из макроса квадрата (x), мы должны объявить его как

#define square (x) ((x) * (x)) / * Обратите внимание, что выражение
(x * x) также потерпит неудачу для квадрата (6-2) * /

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

Выход программы | Используйте макросы осторожно!

0.00 (0%) 0 votes