int가 사용 word size를 사용하기 때문에 32bit에서는 4byte, 64bit에서는 8byte를 사용한다.
이것은 상당히 유명한 내용이기 때문에 많이들 안다.
그런데 놓치기 쉬운 것은 long 이다.
linux에서 기본적으로 long이 unsigned int 로 되어 있기 때문에 마찬가지로 int와 동일한 크기를 가진다.
좀 더 깊이 들어가면 data model에 따라 조금씩 다르다고 하는데 자세히는 모르겠다
64-bit data models |
||||||
Data model |
short (integer) |
int |
long (integer) |
long long |
pointers/ |
Sample operating systems |
LLP64/ |
16 |
32 |
32 |
64 |
64 |
Microsoft Windows(x86-64 and IA-64) |
LP64/ |
16 |
32 |
64 |
64 |
64 |
Most Unixand Unix-likesystems, e.g. Solaris,Linux, BSD, and OS X;z/OS |
ILP64 |
16 |
64 |
64 |
64 |
64 |
HAL Computer Systems port of Solaris toSPARC64 |
SILP64 |
64 |
64 |
64 |
64 |
64 |
<wikipedia : https://en.wikipedia.org/wiki/64-bit_computing>
간단한 test로 sizeof를 확인해봤다
printf("long: %d\n", sizeof(long));
printf("int : %d\n", sizeof(int));
64bit
long: 8
int : 4
예상과 다르게 int가 4로 나왔다. 역시나 wiki는 똑똑한 사람들이 편집하는구나.
'Programming > C언어우려먹기' 카테고리의 다른 글
예외처리 scanf에서 이상한 값이 입력되었을 때. (4) | 2008.05.29 |
---|---|
유클리드 호제법을 이용한 최대공약수, 최소공배수 계산 (0) | 2008.05.29 |
factorial (재귀호출, 반복문) (0) | 2008.05.01 |
정렬 - 삽입정렬(Insert Sort), 힙정렬(Heap Sort), 쉘정렬(Shell Sort) (0) | 2008.04.27 |
정렬 - 버블정렬(bubble sort), 선택정렬(selection sort), 퀵정렬(quick sort) (0) | 2008.04.27 |
source C 완전제곱수 판별 (2) | 2008.03.19 |
C언어에서 사용되는 연산자들(사실 C,C++,JAVA등 다양한 언어에서 공통적으로 사용된다.) (0) | 2008.03.10 |
무지간단한 주사위 통계 (0) | 2008.03.03 |
2진수로 표현하기 (0) | 2008.02.28 |