9
通常已知值是正值。例如,TCP/UDP序列号总是正值。 int
和unsigned int
都足以存储最大的sequence number
,所以我可以使用这些类型中的任何一种。还有很多其他的例子,值已知是积极的。每次我知道我正在处理无符号值时,我应该使用“无符号”吗?
是否有任何理由使用unsigned
类型时,常规signed
类型的容量是否足够(通常绰绰有余)?
我个人倾向于使用常规的类型,因为:
int
可能是一个有点更具可读性比uint
或unsigned int
- 我并不需要包括额外的头为
UINT
等 - 我将避免在程序中的其他地方进一步投入
使用原因unsigned
类型我可以想象:
- 帮助编译器生成更好的代码?
- 帮助其他程序员理解变量是无符号
- 避免可能出现的错误(例如,当INT被分配到UINT编译器可能会产生编译时错误,我们应该检查我们分配一个值不为负)
有关此处的一些想法:http://embeddedgurus.com/stack-overflow/2009/08/a-tutorial-on- signed-and-unsigned-integers/ – Morwenn 2013-04-24 09:36:57
谢谢,我刚才发现这个问题http://stackoverflow.com/questions/12225521/should-unsigned-ints-be-used-if-not-necessary?rq= 1 – javapowered 2013-04-24 09:38:02
没有。有一些反对使用'unsigned'的争论 - Stroustrup在某处传递了C++编程语言 - 拉科斯在他的一本书中写了一篇关于它的章节:单调乏味。示例问题:如果你有值a和b,'abs(a - b)'倾向于直观地用于整数,但不是无符号的;值得注意的是标准转换可以默默启动,所以您可能希望从无符号使用中获得的支票无论如何都不起作用 - 负值变得无声无息,反之亦然。 – 2013-04-24 09:39:16