Salida del Programa | ¡Use las macros con cuidado!

Prediga la salida del siguiente programa  

C++

#include <iostream>
using namespace std;
 
#define square(x) x*x
 
int main()
{
  int x;
  x = 36 / square(6);
   
  cout << x;
   
  return 0;
}
 
// This code is contributed by sarajadhav12052009

C

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

36

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 se calcula como 36. Si queremos el comportamiento correcto de macro cuadrado (x), debemos declararlo como # define square(x) ((x)*(x)) /* Tenga en cuenta que la expresión (x*x) también fallará para square(6-2) */

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 *