¿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).
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