让我对常规 c 整数声明感到困扰的一件事是它们的名称很奇怪,“long long”是最糟糕的。我只为 32 位和 64 位机器构建,所以我不一定需要库提供的可移植性,但是我喜欢每种类型的名称都是一个长度相似的单词,大小没有歧义。
// multiple word types are hard to read
// long integers can be 32 or 64 bits depending on the machine
unsigned long int foo = 64;
long int bar = -64;
// easy to read
// no ambiguity
uint64_t foo = 64;
int64_t bar = -64;
在 32 位和 64 位机器上:
1) 使用较小的整数(如 int16_t)是否可以比使用更高的整数(如 int32_t)慢?
2) 如果我需要一个 for 循环来运行 10 次,是否可以使用可以处理它的最小整数而不是典型的 32 位整数?
for (int8_t i = 0; i < 10; i++) {
}
3) 每当我使用一个我知道永远不会为负的整数时,即使我不需要提供的额外范围,是否可以更喜欢使用无符号版本?
// instead of the one above
for (uint8_t i = 0; i < 10; i++) {
}
4) 对 stdint.h 中包含的类型使用 typedef 是否安全
typedef int32_t signed_32_int;
typedef uint32_t unsigned_32_int;
编辑:两个答案都一样好,我不能真正倾向于一个,所以我只选择了代表较低的回答者