C | Macro y preprocesador | Pregunta 6

#include <stdio.h>
#define square(x) x*x
int main()
{
  int x;
  x = 36/square(6);
  printf("%d", x);
  return 0;
}

(A) 1
(B) 36
(C) 0
(D) Error del compilador

Respuesta: (B)
Explicación: el preprocesador reemplaza el cuadrado (6) por 6*6 y la expresión se convierte en x = 36/6*6 y el valor de x es calculado como 36. Tenga en cuenta que la macro también fallará para las expresiones «x = cuadrado (6-2)»

Si queremos el comportamiento correcto de la macro cuadrada (x), debemos declarar la macro como

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

Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *