Predecir la salida de los siguientes programas
Pregunta 1
c
int main() { int i = 0; while (i <= 4) { printf("%d", i); if (i > 3) goto inside_foo; i++; } getchar(); return 0; } void foo() { inside_foo: printf("PP"); }
Salida: Error del compilador: Etiqueta «inside_foo» usada pero no definida.
Explicación: El alcance de una etiqueta está dentro de una función. No podemos ir a una etiqueta desde otra función.
Pregunta 2
c
#define a 10 int main() { #define a 50 printf("%d",a); getchar(); return 0; }
Salida: 50 El
preprocesador no da ningún error si redefinimos una directiva de preprocesador. Sin embargo, puede dar una advertencia. El preprocesador toma el valor más reciente antes del uso de y lo coloca en lugar de a.
Ahora intenta seguir
c
#define a 10 int main() { printf("%d ",a); #define a 50 printf("%d ",a); getchar(); return 0; }
Pregunta 3
c
int main() { char str[] = "geeksforgeeks"; char *s1 = str, *s2 = str; int i; for(i = 0; i < 7; i++) { printf(" %c ", *str); ++s1; } for(i = 0; i < 6; i++) { printf(" %c ", *s2); ++s2; } getchar(); return 0; }
Salida
ggggggggeeksf
Explicación
Tanto s1 como s2 se inicializan en str. En el primer ciclo, se imprime str y se incrementa s1, por lo que el primer ciclo imprimirá solo g. En el segundo ciclo, s2 se incrementa y s2 se imprime, por lo que el segundo ciclo imprimirá «geeksf»
Pregunta 4
c
int main() { char str[] = "geeksforgeeks"; int i; for(i=0; str[i]; i++) printf("\n%c%c%c%c", str[i], *(str+i), *(i+str), i[str]); getchar(); return 0; }
Salida:
gggg
eeee
eeee
kkkk
ssss
ffff
oooo
rrrr
gggg
eeee
eeee
kkkk
ssss
Explicación: Las
siguientes son diferentes formas de indexar tanto la array como la string.
arr[i]
*(arr + i)
*(i + arr)
i[arr]
Así que todos imprimen el mismo carácter.
Pregunta 5
c
int main() { char *p; printf("%d %d ", sizeof(*p), sizeof(p)); getchar(); return 0; }
Salida: Depende del compilador. Obtuve la salida como «1 4»
Explicación:
la salida del programa anterior depende del compilador. sizeof(*p) da el tamaño del carácter. Si los caracteres se almacenan como 1 byte, entonces sizeof(*p) da 1.
sizeof(p) da el tamaño de la variable de puntero. Si las variables de puntero se almacenan como 4 bytes, entonces da 4.
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