为了表示长度或计数变量,使用有符号或无符号整数是否更好?
在我看来,C++ STL往往更喜欢无符号(std::size_t就像在std :: vector :: size()中一样,而C#BCL往往更喜欢有符号整数(比如在ICollection.Count中).
考虑到长度或计数是非负整数,我的直觉会选择无符号 ; 但我不明白为什么.NET设计者选择了有符号整数.
什么是最好的方法?每个人的利弊是什么?
是否有一个整数数据类型,在16位平台上总是正好是2个字节,在32位平台上是4个字节,在64位平台上是8个字节?假设C++ 11,它将用于计算,而不是内存寻址.
有std :: size_t,但是签名的等价物(std :: ptrdiff_t?)是什么,是否保证满足要求?
有std :: intptr_t和std :: uintptr_t,但它们的大小并不总是与size_t相同.
有std :: int_leastN_t和std :: int_fastN_t,但要么保证满足要求,如果是,那么'N'的正确值是多少?
Boost是否提供类似于(n)int_native_t和uint_native_t的东西?