知识分享 – C语言 | 每日问答(1)

读者:请问如何决定使用那种整数类型?

小林:如果需要大数值, 使用 long 型。否则, 如果空间很重要, 使用 short 型。除此之外, 就使用 int 型。如果严格定义的溢出特征很重要而负值无关紧要, 或者你希望在操作二进制位和字 节时避免符号扩展的问题, 请使用对应的无符号类型。

但是, 要注意在表达式中混 用有符号和无符号值的情况。尽管字符类型 可以当成 “小” 整型使用, 但由于不可预 知的符号扩展和代码增大有时这样做可能得不偿失。使用无符号字符型有所帮助。

在选择浮点型和双精度浮点型时也有类似的权衡。但如果一个变量的指针必 须为特定的类型时, 以上规则不再适用。

如果因为某种原因你需要声明一个有严格大小的变量, 确保象 C99 的 <inttypes.h> 那样用某种适当的 typedef 封装这种选择。

读者:64 位机上的 64 位类型是什么样的?

小林:C99 标准定义了 long long 类型, 其长度可以保证至少 64 位, 这种类型在某些编译器上实现已经颇有时日了。其它的编译器则实现了类似longlong的扩展。另一方面, 也可以实现 16 位的短整型、32 位的整型和64位的长整型, 有些编译器正是这样做的。

正文完