Salida de programas C++ | Conjunto 25 (macros)

Requisito previo: macros 
 

  • ¿Cuál es la salida del siguiente programa? 

CPP

#include <iostream>
using namespace std;
 
#define a 10
 
int main()
{
    int a = 5;
    cout << "macro variable value: "<< a;
    return 1;
}

Salida: 
Error 

  • Descripción: el compilador no puede resolver el alcance y, por lo tanto, no sabe qué valor imprimir, por lo tanto, error. 
     
  • ¿Cuál es la salida del siguiente programa? 

CPP

#include <iostream>
using namespace std;
 
#define area length * width
 
int main()
{
    int length = 10, width = 20;
    cout << "macro expression area: " << area;
    return 1;
}

Producción: 

macro expression area: 200
  • Descripción: a diferencia de la primera pregunta, aquí el valor en el programa debe reemplazarse en la macro. Tan pronto como el control llega a «área», se reemplaza con el código de macro, es decir, 
 cout<< "macro expression area: " << length * width;

y luego se sustituyen y calculan los valores de largo y ancho. 
 

  • ¿Cuál es la salida del siguiente programa? 

CPP

#include<iostream>
using namespace std;
 
#define sqrt(x) (x*x)
 
int main()
{
    int a = 3, b;
    b = sqrt(a + 5);
    cout<< "Output of b = " << b;
}

Producción: 

Output of b =  23
  • Descripción: Sí, no es sqrt (8) PERO sqrt (a + 5); será reemplazado como (a + 5*a + 5); resultando como 23 para que sea perfecto, el comando macro debe reemplazarse como 
     
 #define sqrt(x) ( (x) * (x) )
  • ¿Cuál es la salida del siguiente programa? 

CPP

#include <iostream>
using namespace std;
 
#define printf(s) cout << s;
 
int main()
{
    printf("GeeksforGeeks");
    cout << "\nBye Bye";
}

Producción:

GeeksforGeeks
Bye Bye
  • Descripción: printf es compatible con el compilador c ++, por lo que no arrojará ningún error. Macro funciona incluso para las palabras clave y cualquier tipo de declaración como printf. Cuando el control llega a printf, arrojará los argumentos al igual que las llamadas de función, ya que ya está definido. 
     
  • ¿Cuál es la salida del siguiente programa? 
     

CPP

#include <iostream>
using namespace std;
 
#define SQRT(x) ( x * x)
 
int main()
{
    int a,  b= 3;
    a = SQRT(b++);
    cout << a << endl << b;
    return 0;
}

Producción: 

12
5
  • Descripción: a = SQRT(b++); se convierte en a = b++ * b++; a = 3 * 4; Aquí estamos usando el operador de incremento posterior, por lo que el 3 se incrementa en la declaración para cada ejecución y también después de que se ejecuta la declaración. 
     

Cuestionario sobre macros
Este artículo es una contribución de I.HARISH KUMAR . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

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 *