C/C++에는 기본 정수 데이터 유형(char short int long 및 long long)에 대한 정의가 매우 느슨합니다. 언어는 최소한 일정 범위의 값을 나타낼 수 있음을 보장하지만 특정 플랫폼(컴파일러 운영 체제 하드웨어)은 그보다 클 수 있습니다.
좋은 예는 길다. 한 머신에서는 32비트(C에서 요구하는 최소값)일 수 있습니다. 다른 하나는 64비트입니다. 정확히 32비트 길이의 정수 유형을 원한다면 어떻게 합니까? 이것이 int32_t가 들어오는 곳입니다. 이는 특정 시스템이 가지고 있는 정수 유형이 정확히 32비트인 것에 대한 별칭입니다.
주형:
intN_t or uintN_t Where N is width of integer which can be 8 16 32 64 or any other type width supported by the library.
CPP
// C++ program to show use of extended integral types #include using namespace std; int main() { uint8_t i; // i with width of exact 8 bits // Minimum value represented by unsigned 8 bit is 0 i = 0; cout << "Minimum value of it: "<< (int)i << endl; // Maximum value represented by unsigned 8 bit is 255 i = 255; cout << "Maximum value of it: "<< (int)i << endl; // Warning: large integer implicitly truncated to // unsigned type. It will print any garbage value i = 2436; cout << "Beyond range value of it: " << (int)i << endl; return 0; }
산출:
In function 'int main()': 19:7: warning : large integer implicitly truncated to unsigned type [-overflow] i = 2436; ^ Minimum value of i : 0 Maximum value of i : 255 Beyond range value of i : 132
다양한 변형
1. 고정 폭 부호 없는 8비트 정수: uint8_t
이는 정확히 8비트의 부호 없는 int를 제공한다는 의미입니다.
2. 최소 너비 부호 없는 8비트 정수: uint_least8_t
이는 최소 8비트를 갖는 가장 작은 유형의 unsigned int를 제공한다는 의미입니다. 메모리 소비에 최적화되었습니다.
3. 가장 빠른 최소 너비의 부호 없는 8비트 정수: uint_fast8_t
이는 내 프로그램을 더 빠르게 만들 수 있는 최소 8비트의 서명되지 않은 int를 제공한다는 의미입니다. 정렬 고려사항으로 인해 더 큰 데이터 유형을 선택할 수 있습니다. 속도에 최적화되었습니다.
따라서 uint8_t의 너비는 정확히 8비트가 보장됩니다. uint_least8_t는 최소 8비트 너비가 보장되는 가장 작은 정수입니다. uint_fast8_t는 최소 8비트 너비가 보장되는 가장 빠른 정수입니다.
그래서 확장된 적분 유형은 우리가 글을 쓰는 데 도움이 됩니다. 가지고 다닐 수 있는 그리고 효율적인 암호.