대단위 소규모 데이터 레이아웃 문제 (중흥)

571 단어
작은 시스템에서 다음 프로그램이 출력됩니까?
union{  
        int i;  
        unsigned char ch[2];  
}Student;  
  
  
int main()  
{  
        Student  student;  
        student.i=0x1420;  
        printf("%d  %d",student.ch[0],student.ch[1]);  
    return 0;  
}  
분석:
1. 소규모 시스템: 낮은 주소에 낮은 바이트를 저장한다.
2. 큰 쪽이든 작은 쪽이든 a[x]는 a[x+1]에 비해 상대적으로 낮은 주소에 저장된다.
32비트 시스템에서 int는 4바이트를 차지하고 메모리의 데이터 레이아웃은 다음과 같다.
max
      00
      00
      14 ch[1]
      20 ch[0]
low
0x20 = 32
0x14 = 20
결과: 32 20

좋은 웹페이지 즐겨찾기