Nivel de dificultad: Novato
Pregunta 1
Prediga la salida del siguiente programa.
int main() { char arr[] = "geeksforgeeks"; printf("%d", sizeof(arr)); getchar(); return 0; }
Salida: 14
La string «geeksforgeeks» tiene 13 caracteres, pero el tamaño es 14 porque el compilador incluye un solo ‘\0’ (terminador de string) cuando el tamaño de la array de caracteres no se menciona explícitamente.
Pregunta 2
En el siguiente programa, ¿qué pondría en lugar de «?» para imprimir «frikis». Evidentemente, algo más que “geeks”.
int main() { char arr[] = "geeksforgeeks"; printf("%s", ?); getchar(); return 0; }
Respuesta: (arr+8)
La declaración printf imprime todo a partir de arr+8 hasta que encuentra ‘\0’
Pregunta 3
Prediga la salida del siguiente programa.
int main() { int x, y = 5, z = 5; x = y==z; printf("%d", x); getchar(); return 0; }
El quid de la cuestión radica en la afirmación x = y==z. El operador == se ejecuta antes que = porque la precedencia de los operadores de comparación (<=, >= y ==) es mayor que el operador de asignación =.
El resultado de un operador de comparación es 0 o 1 según el resultado de la comparación. Dado que y es igual a z, el valor de la expresión y == z se convierte en 1 y el valor se asigna a x a través del operador de asignación.
Pregunta 4
Prediga la salida del siguiente programa.
int main() { printf(" \"GEEKS %% FOR %% GEEKS\""); getchar(); return 0; }
Salida: «GEEKS % PARA % GEEKS»
La barra invertida (\) funciona como carácter de escape para las comillas dobles («). Para obtener una explicación de %%, consulte esto .
Escriba comentarios si encuentra que alguna de las respuestas/explicaciones es incorrecta, o si desea compartir más información sobre los temas discutidos anteriormente.
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