#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