其实程序很简单,因为有符号的就是无符号的一半大小,所以直接用无符号赋值-1就会溢出成最大数:
1
2
3
4
5
6
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位的类型,看输出结果就比较奇妙。
输出结果依次是:
1
2
3
4
5
6
uint8_t: 255
uint16_t: 65535
uint32_t: 4294967295
uint64_t: 18446744073709551615
uint_fast8_t: 255
uint_fast16_t: 4294967295
可以见到在我的电脑上,fast8是普通的int8,而fast16却用了int32的类型。