30/09/2018, 21:59
Giải thích giúp em tại sao ra như vậy?
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
typedef union
{
int ival;
float fval;
char ch[2];
}value;
value a, b, x[10];
a.ival=0xa1b2;
printf("cha[0]=%x, char[1]=%x
", a.ch[0], a.ch[1]);
return 0;
}
Tại sao a.ch[0]=0xb2 , a.ch[1]=0xa1 ??? Mà không phải là a.ch[0]=0xa1 , a.ch[1]=0xb2 ???
Bài liên quan
Nó do quy định cách lưu trữ của máy tính thôi bạn. Nếu lưu theo little-endian thì byte thấp lưu ở trước, byte cao lưu ở sau. Big-endian thì ngược lại. Các dòng máy tính sử dụng kiến trúc x86-64 lưu trữ theo little-endian nên thu được kết quả trên.