ISRO | CS ISRO 2016 | Pregunta 22

¿Cuál será la salida del siguiente programa? Suponga que está ejecutando este programa en un procesador little-endian.

#include<stdio.h>
  
int main() {
    short a = 320;
    char * ptr;
    ptr = (char * ) & a;
    printf("%d", * ptr);
    return 0;
}

(A) 1
(B) 320
(C) 64
(D) Error de compilación

Respuesta: (C)
Explicación: Orden de bytes Big Endian: El byte más significativo de los datos se coloca en el byte con la dirección más baja. El resto de los datos se coloca en orden en los próximos tres bytes en la memoria.

Orden de bytes Little Endian: el byte menos significativo de los datos se coloca en el byte con la dirección más baja. El resto de los datos se coloca en orden en los próximos tres bytes en la memoria.

a= 320, representación de 2 bytes de a:

Pero como estamos usando el formato little-endian aquí, en realidad se almacenaría en la memoria como:

ptr, que es un puntero de carácter, al eliminar la referencia generará un solo byte, es decir, el primer byte: (01000000) 2 , que es igual a 64.
Por lo tanto, la opción correcta es (C).

Cuestionario de esta pregunta

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 *