64bit 환경에서는 메모리와 파일 크기의 한계가 32bit 환경보다 훨씬 커지게 된다. 그러나 이러한 조건을 활용하기 위해서는 프로그래밍에서 몇 가지 유의 사항이 있다. 여기서 간략하게 요약해 본다.
64비트에서 각 데이타 타입의 크기는, char 1byte, short 2byte, int 4byte, long 8byte, long long 8byte, float 4byte, double 8byte, long double 10byte, void * 8byte이다. 반면에, 32bit에서는 int, long, 그리고 void *는 4byte, 즉, 32bit가 된다. 아래는 C에서 이러한 부분을 확인해 볼 수 있는 간단한 코드이다.
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main(void)
{
printf("### 1 Byte = 8 bit ###\n");
printf("int : %d byte\n",sizeof(int));
printf("unsigned int : %d byte\n",sizeof(unsigned int));
printf("long int : %d byte\n",sizeof(long int));
printf("unsigned long int : %d byte\n",sizeof(unsigned long int));
printf("long long int : %d byte\n",sizeof(long long int));
printf("float : %d byte\n",sizeof(float));
printf("double : %d byte\n",sizeof(double));
printf("long double : %d byte\n",sizeof(long double));
printf("(void *) : %d byte\n",sizeof(void *));
printf("\n");
printf("INT_MAX = %d\n", INT_MAX);
printf("UINT_MAX = %ud\n", UINT_MAX);
printf("LONG_MAX = %ld\n", LONG_MAX);
printf("ULONG_MAX = %lud\n", ULONG_MAX);
return 0;
}아래는 64bit에서의 결과의 예제이다.
### 1 Byte = 8 bit ### int : 4 byte unsigned int : 4 byte long int : 8 byte unsigned long int : 8 byte long long int : 8 byte float : 4 byte double : 8 byte long double : 16 byte (void *) : 8 byte INT_MAX = 2147483647 UINT_MAX = 4294967295d LONG_MAX = 9223372036854775807 ULONG_MAX = 18446744073709551615d
!= sizeof(int). 그러나 32bit 환경에서는 sizeof(int) == sizeof(long) = 32bit = 4byte.
figure의 갯수가 long 형태와 double 형태가 다르다는 것을 숙지해야 한다.
integer를 쓰기 위해서는, kind를 이용하거나 아니면 INTEGER*8를 명시해야 한다.