我确实意识到这个标题一开始可能听起来很傻,但请耐心等待我一会儿。:)
自从我开始使用size_t
andptrdiff_t
之后,我就再也没有使用过 forint
,在我的记忆中。
我记得最近使用的唯一整数数据类型属于以下类别之一:
(无符号)与某个内存数据结构(例如
vector
)的索引相关联的整数。
几乎总是,最合适的类型是size_t
(或者...::size_type
,如果您要加倍努力)。
即使整数实际上并不代表索引,但通常它仍然与某个索引相关联,因此仍然size_t
是合适的。的签名版本
size_t
。在许多情况下,最合适的类型似乎是ptrdiff_t
,因为通常当您需要它时,您正在使用迭代器——因此size_t
和ptrdiff_t
都适合它们。long
. 我偶尔需要这个_InterlockedIncrement
(引用计数)。(
unsigned
)long long
,用于保存文件大小。unsigned int
或者unsigned long
,用于“计数”目的(例如,每 100 万次迭代,更新 UI)。unsigned char
用于对内存的原始字节级访问。
(旁注:我从来没有发现任何一个用途signed char
。)intptr_t
以及uintptr_t
偶尔存储操作系统句柄、指针等。
的一个特殊方面int
是你不应该溢出它(因为它是未定义的行为),所以你甚至不能可靠地使用它来进行计数——特别是如果你的编译器将它定义为 16 位。
那么,您应该何时使用int
(除了您的依赖项已经需要它时)?
现在它有什么真正的用途,至少在新编写的可移植代码中?