각 자료형의 최소크기만을 규정짓고 있기 때문에 어떤 경우에는 여러 시스템에서 자료형의 크기가 모두 다를 수 있다. 즉 한 시스템에서 만든 코드가 다른 시스템에서는 잘 작동하지 않을 수 있다. 이식성이 높지 않다는 뜻이다. 이럴때 변수, 자료형의 자료형을 명확하게 고정 할 수 있도록 사용하는게 고정 너비 정수형이다.
#include<stdio.h>
// #include<stdint.h> // also included in inttypes.h
#include<inttypes.h>
int main()
{
int i;
int32_t i32; // 32 bit integer / 사이즈를 명확하게 정의
int_least8_t i8; // smallest 8 bit / 최소 크기 지정
int_fast8_t f8; // fastest minimum / 크기 중 가장 빠른 것
intmax_t imax; // biggest signed integers / signed 자료형 중 가장 큰 사이즈 사용
uintmax_t uimax; // biggest unsigned integers / unsigned 자료형 중 가장 큰 사이즈 사용
i32 = 1004;
printf("me32 = %d\n", i32);
printf("me32 = %" "d" "\n", i32); //%"d\n"을 %"d""\n"으로 쪼개서 코딩해도 된다.
printf("me32 = %" PRId32 "\n", i32); //PRId32 : 32비트정수의 형식지정자를 프린트 해달라
return 0;
}
#include<stdint.h> 사용시 기존시스템에서 조건에 제일 맞는 자료형들을 새로 만드는 것이 아니라 이름만 바꿔서 고정너비정수로 사용 할 수 있게 해준다.
printf함수 사용시 고정너비정수형에 대칭이 맞는 형식지정자를 사용하는 것이 중요한데 #include<inttypes.h>에 고정너비정수형에 맞는 형식지정자들이 포함되어 있다. 또 #include<inttypes.h>에는 #include<stdint.h>이 포함되어 있어서 inttypes.h만 사용하면 된다.
고정너비정수형의 형식지정자를 모를 경우 #include<inttypes.h> 해주고, 형식지정자 자리에 PRId32(매크로, 프린트 32비트 정수)를 넣어주면 알맞는 형식지정자들이 출력된다.
'프로그래밍언어 > C언어' 카테고리의 다른 글
[C language] 불리언형(Boolean Types) (0) | 2020.12.16 |
---|---|
[C language] 문자형 (0) | 2020.12.09 |
[C language] 8진수와 16진수 (0) | 2020.12.09 |
[C language] 다양한 정수형들 (0) | 2020.12.09 |
[C language] 정수(integers)의 오버플로우(Overflow) (0) | 2020.12.09 |