无聊时的无聊程序

今天突发奇想——其实也不是突发,是想着一个大project,将写在excel里面的一个计算程序写成C++的。但是因为要涉及比较大的数字的运算,就要考虑用什么类型的变量来装载。又不记得C++的各种类型有多大——倒不如说一直不记各种语言的各种变量有多大。所以就想着写个程序来输出大小。

其实程序很简单,因为有符号的就是无符号的一半大小,所以直接用无符号赋值-1就会溢出成最大数:

uint8_t int8 = -1;
uint16_t int16 = -1;
uint32_t int32 = -1;
uint64_t int64 = -1;
uint_fast8_t fastint8 = -1;
uint_fast16_t fastint16 = -1;

写的时候代码自动提示发现了一个带“fast”的类型,还挺神奇,标准上说这些类型是在这个处理器上运算最快的、至少有N位的类型,看输出结果就比较奇妙。

输出结果依次是:

uint8_t: 255
uint16_t: 65535
uint32_t: 4294967295
uint64_t: 18446744073709551615
uint_fast8_t: 255
uint_fast16_t: 4294967295

可以见到在我的电脑上,fast8是普通的int8,而fast16却用了int32的类型。

留下评论