1. ¿Cuál será el resultado de lo siguiente?
void main() { int const* p = 5; printf("%d", ++(*p)); }
Opciones:
A. 6
B. 5
C. Valor basura
D. Error del compilador
Answer : D
Explicación: dará un error de tiempo de compilación porque estamos tratando de cambiar el valor constante. p es un puntero a un «entero constante». Pero tratamos de cambiar el valor del «entero constante».
2. ¿Cuál será el resultado de lo siguiente?
void main() { char* p; printf("%d %d", sizeof(*p), sizeof(p)); }
Opciones:
A. 1 1
B. 1 8
C. 2 1
D. 2 2
Answer : B
Explicación: el operador sizeof() proporciona la cantidad de bytes que toma su operando. P es un puntero de carácter, que necesita un byte para almacenar su valor (un carácter). Por lo tanto, sizeof(*p) da un valor de 1. Dado que necesita dos bytes para almacenar la dirección del puntero de carácter, sizeof(p) da 8.
3. ¿Cuál será el resultado de lo siguiente?
void main() { int m, i = 0, j = 1, k = 2; m = i++ || j++ || k++; printf("%d %d %d %d", m, i, j, k); }
Opciones:
A. 1 1 2 3
B. 1 1 2 2
C. 0 1 2 2
D. 0 1 2 3
Answer : B
Explicación: en una expresión que implica || operador, la evaluación se lleva a cabo de izquierda a derecha y se detendrá si uno de sus componentes se evalúa como verdadero (un valor distinto de cero).
Así que en la expresión dada m = i++ || j++ || k++.
Se detendrá en j y asignará el valor actual de j en m.
por lo tanto m = 1, i = 1, j = 2 y k = 2 (ya que k++ no se encontrará, por lo que su valor sigue siendo 2)
4. ¿Cuál será el resultado de lo siguiente?
void main() { int i = 0; printf("%d %d", i, i++); }
Opciones:
A. 0 1
B. 1 0
C. 0 0
D. 1 1
Answer : B
Explicación: Dado que la evaluación es de derecha a izquierda. Entonces, cuando la declaración de impresión ejecuta el valor de i = 0, ya que se ejecuta de derecha a izquierda, cuando i ++ se ejecutará primero e imprimirá el valor 0 (desde su incremento posterior) y después de imprimir el valor 0 de i se convertirá en 1.
5. ¿Cuál será el resultado de lo siguiente?
#include <stdio.h> int main(void) { char p; char buf[10] = { 1, 2, 3, 4, 5, 6, 9, 8 }; p = (buf + 1)[5]; printf("%d", p); return 0; }
Opciones:
A. 5
B. 6
C. 9
D. Error
Answer : C
Explicación: x[i] es equivalente a *(x + i), entonces (buf + 1)[5] es *(buf + 1 + 5), o buf[6].
Este artículo es una contribución de Rishabh Jain . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado 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