扩展整数类型(在C/C++中选择正确的整数大小)

C/C++对其基本整数数据类型(char、short、int、long和long-long)有非常宽松的定义。该语言保证它们至少可以表示某个范围的值,但任何特定的平台(编译器、操作系统、硬件)都可能大于此范围。 一个很好的例子很长。在一台机器上,它可能是32位(C所要求的最小值)。另一方面,它是64位。如果你想要一个32位长的整数类型,你会怎么做?这就是int32_t的用武之地:它是特定系统中任何整数类型的别名,正好是32位。 模板:

null
intN_t or uintN_tWhere N is width of integer which can be 8, 16, 32, 64or any other type width supported by the library.

CPP

// C++ program to show use of extended integral types
#include <iostream>
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 : "<< ( int )i << endl;
// Maximum value represented by unsigned 8 bit is 255
i = 255;
cout << "Maximum value of i : "<< ( 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 : " << ( 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    : 0Maximum value of i    : 255Beyond range value of i    : 132

不同的变体 1.固定宽度无符号8位整数: uint8_t 这意味着给我一个8位的无符号整数。 2.最小宽度无符号8位整数: 至少 这意味着给我最小类型的无符号整数,至少有8位。针对内存消耗进行了优化。 3.最快最小宽度无符号8位整数: uint_fast8_t 这意味着给我一个至少8位的无符号整数,这将使我的程序更快。出于对齐的考虑,它可能会选择更大的数据类型。优化了速度。 因此,uint8_t保证正好是8比特宽。uint_least8_t是保证至少8位宽的最小整数。uint_fast8_t是保证至少8位宽的最快整数。 所以扩展积分类型有助于我们写作 便携式的 有效率的 密码 本文由 罗希特·卡斯尔 。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请发表评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享