며칠전에 Sun 8에서 테스트해봤는데
32bit 에서는
int 4bytes
long 4bytes (= long int)
long long 8bytes
double 8bytes
long double 16bytes
64bit 에서는
int 4bytes
long 8bytes (= long int)
long long 8bytes
double 8bytes
long double 16bytes
였던걸로 기억합니다만
확실하게 sizeof typename 해보십시오.
(컴파일할때 32bits는 그냥, /64bits는 별도 옵션필요)
Re: 질문임다..... long 형 이 왜......
자료형의 크기는 Machine( compiler ) 마다 다릅니다.
이렇게 해보세요.
printf( "char size = [%d]\n", sizeof( char ) );
printf( "int size = [%d]\n", sizeof( int ) );
.
.
.
printf( "long double size = [%d]\n", sizeof( long double ) );
이상 입니다.
Re: 질문임다..... long 형 이 왜......
long 형은 16bit 기계일때는 소프트웨어적으로 32bit 을 만들어 썼지만,
요상하게두 ( 추측입니다만 32bit 이상의 수치의 의미가 별로 없어졌거
나, 기존 16bit 기계와의 long type 의 호환적인 측면 에서 ) 32bit 을
쓰네여..,
C 의 Int type 은 size 의 고정의 의미가 아니라, 산술 레지스터의 크기
여서 32 bit 기계에서는 32bit 처리를 16bit 에서는 16bit 이 int type
의 기본이 되는것 같네여...,
VC 에서는 __int64 라는 type 을 64bit 정수형을 기본으루 제공하네
여..., 혹시 linux 64bit int type 을 아시면 답점 해주세여....
Re^2: 질문임다..... long 형 이 왜......
gcc 컴파일러는 long 의 두배 크기인 long long 타입을 지원합니다.
대부분의 32비트 아키텍쳐는 ILP32 (integer long pointer 가 32비트인
시스템) 아키텍쳐입니다.
몇몇 64비트 아키텍쳐는 LP64 모델로 알려져 있지요. 이 때는 다시
integer 가 32비트이고 long 은 그 두배인 64 bit 가 됩니다.
Re: 질문임다..... long 형 이 왜......
며칠전에 Sun 8에서 테스트해봤는데
32bit 에서는
int 4bytes
long 4bytes (= long int)
long long 8bytes
double 8bytes
long double 16bytes
64bit 에서는
int 4bytes
long 8bytes (= long int)
long long 8bytes
double 8bytes
long double 16bytes
였던걸로 기억합니다만
확실하게 sizeof typename 해보십시오.
(컴파일할때 32bits는 그냥, /64bits는 별도 옵션필요)
댓글 달기