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.