Salida de programas C | Conjunto 38

Pregunta1. ¿Cuál es el resultado de lo siguiente?

#include <stdio.h>
void main()
{
    int a[5] = { 5, 1, 15, 20, 25 };
    int i, j, m;
    i = ++a[1];
    j = a[1]++;
    m = a[i++];
    printf("%d, %d, %d", i, j, m);
}

Opciones:
A. 3, 2, 15
B. 2, 3, 20
C. 2, 1, 15
D. 1, 2, 5

Answer : A

Explicación: >> int a[5] = {5, 1, 15, 20, 25}; La variable arr se declara como una array de enteros con un tamaño de 5 y se inicializa en a
[0] = 5, a[1] = 1, a[2] = 15, a[3] = 20, a[4 ] = 25.

>> int i, j, m; Las variables i, j, m se declaran como un tipo entero.

>> yo = ++a[1]; se convierte en i = ++1; Por lo tanto i = 2 y a[1] = 2

>> j = a[1]++; se convierte en j = 2++; Por lo tanto, j = 2 y a[1] = 3.

>> m = a[i++]; se convierte en m = a[2]; Por lo tanto, m = 15 y i se incrementa en 1 (i ++ significa 2 ++, por lo que i = 3)

>> printf(“%d, %d, %d”, i, j, m); Imprime el valor de las variables i, j, m

Pregunta2. ¿Cuál es el resultado de lo siguiente?

void main()
{
    int arr[10] = { 1, 2, 3, 4, 5 };
    printf("%d", arr[5]);
}

Opciones:
A. Valor basura
B. 5
C. 6
D. 0

Answer : D

Explicación: cuando una array se inicializa parcialmente en el momento de la declaración, los elementos restantes de la array se inicializan en 0 de forma predeterminada.

Pregunta3. ¿Cuál es el resultado de lo siguiente?
Suponga que la array comienza en 65472 y cada entero ocupa 2 bytes

void main()
{
    int a[3][4] = { 1, 2, 3, 4, 4, 3, 2, 1, 7, 8, 9, 0 };
    printf("%u, %u", a + 1, &a + 1);
}

Opciones:
A. 65474, 65488
B. 65480, 65488
C. 65480, 65496
D. 65474, 65476

Answer : C

Explicación: la dirección base (también la dirección del primer elemento) de la array es 65472.
Para una array bidimensional, una referencia a una array tiene el tipo «puntero a una array de 4 enteros». Por lo tanto, a+1 apunta a la ubicación de memoria del primer elemento de la segunda fila en la array a. Por lo tanto, 65472 + (4 entradas * 2 bytes) = 65480
Entonces, &a tiene el tipo «puntero a una array de 3 arrays de 4 entradas», en total 12 entradas. Por lo tanto, &a+1 denota “12 enteros * 2 bytes * 1 = 24 bytes”.
Por lo tanto, la dirección inicial es 65472 + 24 = 65496. Entonces, &a+1 = 65496

Pregunta4. ¿Cuál es el resultado de lo siguiente?

#include <stdio.h>
void main()
{
    printf(6 + "Geeks for Geeks");
}

Opciones:
A. para Geeks
B. Geeks
C. error de tiempo de compilación
D. sin salida

Answer : A

Explicación: se salta los 6 caracteres e imprime la string dada.

Pregunta5. ¿Cuál es el resultado de lo siguiente?

#include <stdio.h>
void main()
{
    char* s = "hello";
    char* p = s;
    printf("%p\t%p", p, s);
}

Opciones:
A. Se imprime una dirección diferente
B. Se imprime la misma dirección
C. Error de tiempo de ejecución
D. Nada

Answer : B

Explicación: *s tendrá el valor «hola» y esa string se asigna a *p, que comenzará a apuntar a la misma ubicación física.

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *