通常认为价值是积极的。例如,TCP / UDP序列号始终为正值。 int
和unsigned int
都足以存储最大的sequence number
,因此我可以使用这些类型中的任何一种。当已知值为正值时,还有许多其他示例。
当常规unsigned
类型的容量足够(并且通常绰绰有余)时,是否有任何理由使用signed
类型?
我个人倾向于使用常规类型,因为:
int
可能比uint
或unsigned int
UINT
等添加额外的标题。我可以想象使用unsigned
类型的原因:
答案 0 :(得分:1)
一个原因是比较有符号和无符号数字会导致令人惊讶的结果。在C和(我认为)C ++中,比较有符号和无符号数会导致有符号数被解释为无符号。如果有符号值恰好为负数,则将其作为无符号读取将给出比任何未签名数字更大的LARGER值,这不是您想要的。有关Objective-C中的示例,请参阅this question,该示例使用与C相同的转换规则。