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