“江南style”视频(我相信你一定听说过)在 youtube 上的浏览量刚刚超过 20 亿。事实上,谷歌表示他们从未期望视频大于 32 位整数......这暗示了谷歌使用 int
而不是 unsigned
的事实他们的观点柜台。我认为他们不得不重新编写代码以适应更大的 View 。
查看他们的风格指南:https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Integer_Types
...他们建议“不要使用无符号整数类型”,并给出一个很好的理由:unsigned
可能是错误的。
这是一个很好的理由,但可以提防。我的问题是:通常使用 unsigned int
是不好的编码习惯吗?
最佳答案
Google 规则在专业圈子中被广泛接受。问题
是无符号整数类型有点损坏,并且有
用于数值时的意外和不自然行为;他们
不能作为红衣主教类型。例如,数组的索引
可能永远不会是负面的,但写起来很有意义
abs(i1 - i2)
查找两个索引之间的距离。如果
i1
和 i2
具有无符号类型。
作为一般规则,Google 风格指南中的这一特定规则
或多或少符合语言设计者的意图。
任何时候你看到除了 int
之外的东西,你可以假设一个特殊的
原因。如果是因为范围,它将是 long
或
long long
,甚至是int_least64_t
。使用无符号类型通常是
您正在处理位的信号,而不是
变量,或者(至少在 unsigned char
的情况下)你是
处理原始内存。
关于使用 unsigned
的“ self 记录”:this
不成立,因为几乎总是有很多值(value)观
变量不能(或不应该)取,包括许多积极的变量。 C++
没有子范围类型,unsigned
的定义方式意味着
它也不能真正用作一个。
关于c++ - 关于 unsigned int 的建议(江南 Style 版),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27275150/