C | Macro y preprocesador | Pregunta 1

#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

Deja una respuesta

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