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.
// 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 i\t: "<< (int)i << endl;
// Maximum value represented by unsigned 8 bit is 255
i = 255;
cout << "Maximum value of i\t: "<< (int)i << endl;
// Warning: large integer implicitly truncated to
// unsigned type. It will print any garbage value
i = 2436;
cout << "Beyond range value of i\t: " << (int)i << endl;
return 0;
}
输出:
In function 'int main()':
19:7: warning: large integer implicitly truncated to unsigned type [-Woverflow]
i = 2436;
^
Minimum value of i : 0
Maximum value of i : 255
Beyond range value of i : 132
不同的变化
1.固定宽度的无符号8位整数: uint8_t
这意味着给我一个正好8位的无符号整数。
2.最小宽度无符号8位整数: uint_least8_t
这意味着给我最小类型的无符号int,该类型至少具有8位。针对内存消耗进行了优化。
3.最快的最小宽度无符号8位整数: uint_fast8_t
这意味着给我一个至少8位的无符号整数,这将使我的程序更快。由于对齐方面的考虑,它可能会选择更大的数据类型。优化速度。
因此,可以确保uint8_t恰好是8位宽。 uint_least8_t是保证至少为8位宽的最小整数。 uint_fast8_t是最快的整数,保证至少为8位宽。
因此,扩展整数类型有助于我们编写可移植且高效的代码。
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。