#include <stdio.h> #define PRINT(i, limit) do \ { \ if (i++ < limit) \ { \ printf("GeeksQuiz\n"); \ continue; \ } \ }while(1) int main() { PRINT(0, 3); return 0; }
¿Cuántas veces se imprime GeeksQuiz en el programa anterior?
(A) 1
(B) 3
(C) 4
(D) Error en tiempo de compilación
Respuesta: (D)
Explicación: La macro IMPRIMIR se expande en el tiempo de preprocesador, es decir, antes del tiempo de compilación. Después de la expansión de la macro, la expresión if se convierte en: if (0++ < 3) . Dado que 0 es una cifra constante y representa solo el valor r, la aplicación del operador de incremento genera un error en tiempo de compilación: se requiere lvalue. lvalue significa una ubicación de memoria con alguna dirección.
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