【发布时间】:2015-02-01 05:14:33
【问题描述】:
“江南style”视频(我相信你一定听说过)在 youtube 上的浏览量刚刚超过 20 亿。事实上,谷歌表示他们从没想过视频会大于 32 位整数……这暗示了谷歌使用 int 而不是unsigned 作为他们的观看计数器。我认为他们不得不重新编写代码以适应更大的视图。
查看他们的风格指南:https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Integer_Types
...他们建议“不要使用无符号整数类型”,并给出一个很好的理由:unsigned 可能有问题。
这是一个很好的理由,但可以提防。我的问题是:使用unsigned int 通常是不好的编码习惯吗?
【问题讨论】:
-
多么愚蠢的规则:“不要使用无符号类型”。我可以想到一百万个无符号类型的用例。
-
我完全不同意该准则。他们的例子的问题在于,当
i是unsigned int时,他们使用i >= 0作为条件——这太愚蠢了。当然,条件总是成立的。事实上,在这种情况下,unsigned int已经完成了它的工作!它永远不会消极! -
我不同意该规则,也许是因为担心在我的answer here 中混合有符号和无符号类型时可能会发生极端情况,但老实说使用正确的警告标志和静态分析应该能发现这些问题。
-
@JosephMansfield 我认为他们意识到这很愚蠢,但这是可以而且已经发生的事情。我知道它是怎么做到的。
-
OTOH 无符号类型不太可能格式化您的硬盘。
标签: c++ styles int 32-bit unsigned