Prediga la salida de los siguientes programas.
Pregunta 1
c
#include<stdio.h> int main() { int n; for(n = 7; n!=0; n--) printf("n = %d", n--); getchar(); return 0; }
Salida: El programa anterior va en bucle infinito porque n nunca es cero cuando se comprueba la condición de bucle (n != 0).
Pregunta 2
c
#include<stdio.h> int main() { printf("%x", -1<<1); getchar(); return 0; }
La salida depende del compilador. Para el compilador de 32 bits sería fffffffe y para el de 16 bits sería fffe.
Pregunta 3
c
# include <stdio.h> # define scanf "%s Geeks For Geeks " main() { printf(scanf, scanf); getchar(); return 0; }
Salida: %s Geeks For Geeks Geeks For Geeks
Explicación: Después de la fase de preprocesamiento de la compilación, se convertirá en la declaración printf.
printf("%s Geeks For Geeks ", "%s Geeks For Geeks ");
Ahora puede adivinar fácilmente por qué la salida es %s Geeks For Geeks Geeks For Geeks.
Pregunta 4
c
#include <stdlib.h> #include <stdio.h> enum {false, true}; int main() { int i = 1; do { printf("%d\n", i); i++; if (i < 15) continue; } while (false); getchar(); return 0; }
Salida: 1
Explicación: El ciclo do while verifica la condición después de cada iteración. Entonces, después de continuar, el control se transfiere a la declaración while (falso). Dado que la condición es falsa, ‘i’ se imprime solo una vez.
Ahora intente debajo del programa.
c
#include <stdlib.h> #include <stdio.h> enum {false, true}; int main() { int i = 1; do { printf("%d\n", i); i++; if (i < 15) break; } while (true); getchar(); return 0; }
Pregunta 5
c
char *getString() { char *str = "Nice test for strings"; return str; } int main() { printf("%s", getString()); getchar(); return 0; }
Salida: «Buena prueba para strings»
El programa anterior funciona porque las constantes de string se almacenan en la Sección de datos (no en la Sección de pila). Entonces, cuando getString devuelve *str no se pierde.
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