C | Lazos y estructura de control | Pregunta 2

#include <stdio.h>
#define PRINT(i, limit) do \
                        { \
                            if (i++ < limit) \
                            { \
                                printf("GeeksQuiz\n"); \
                                continue; \
                            } \
                        }while(0)
  
int main()
{
    int i = 0;
    PRINT(i, 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: (A)
Explicación: si es necesario expandir una macro en varias líneas, la mejor práctica es escribir esas líneas dentro de do{ } while(0) para evitar efectos secundarios macro. Después de que GeeksQuiz se imprime una vez, el control llega a la instrucción while para verificar la condición. Dado que la condición es falsa, el ciclo se termina.

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 *