标签:
Google C++编程规范的P25页有如下叙述:
<stdint.h> 定义了 int16_t 、 uint32_t 、 int64_t 等整型,在需要确定大小的整型时可以使用它们代替 short 、 unsigned long long 等,在 C 整型中,只使用 int 。适当情况下,推 荐使用标准类型如 size_t 和 ptrdiff_t 。
最常使用的是,对整数来说,通常不会用到太大,如循环计数等,可以使用普通的 int 。 你可以认为 int 至少为 32 位,但不要认为它会多于 32 位,需要 64 位整型的话,可以使用int64_t 或 uint64_t 。对于大整数,使用 int64_t 。
不要使用 uint32_t 等无符号整型,除非你是在表示一个 位组( bit pattern ) 而不是一个 数值。即使数值不会为负值也不要使用无符号类型,使用断言来保护数据。
有些人,包括一些教科书作者,推荐使用无符号类型表示非负数,类型表明了数值取值形 式 。但是,在 C 语言中,这一优点被由其导致的 bugs 所淹没。看看:
for (unsigned int i = foo.Length()-1; i >= 0; --i)
上述代码永远不会终止!有时 gcc 会发现该 bug 并报警,但通常不会。类似的 bug 还会 出现在比较有符合变量和无符号变量时,主要是 C 的 类型提升机制( type-promotion
scheme , C 语言中各种内建类型之间的提升转换关系) 会致使无符号类型的行为出乎你 的意料。因此,使用断言声明变量为非负数,不要使用无符号型。
以下内容转载自http://apps.hi.baidu.com/share/detail/32935657
stdint.h文件如下:
标签:
原文地址:http://www.cnblogs.com/yymn/p/5103832.html