c++ - 关于 unsigned int 的建议(江南 Style 版)

标签 c++ styles int 32-bit unsigned

“江南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) 查找两个索引之间的距离。如果 i1i2 具有无符号类型。

作为一般规则,Google 风格指南中的这一特定规则 或多或少符合语言设计者的意图。 任何时候你看到除了 int 之外的东西,你可以假设一个特殊的 原因。如果是因为范围,它将是 longlong long,甚至是int_least64_t。使用无符号类型通常是 您正在处理位的信号,而不是 变量,或者(至少在 unsigned char 的情况下)你是 处理原始内存。

关于使用 unsigned 的“ self 记录”:this 不成立,因为几乎总是有很多值(value)观 变量不能(或不应该)取,包括许多积极的变量。 C++ 没有子范围类型,unsigned 的定义方式意味着 它也不能真正用作一个。

关于c++ - 关于 unsigned int 的建议(江南 Style 版),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27275150/

相关文章:

c++ - 将函数分配给 std::function 类型时调用哪个函数原型(prototype)(以及如何调用)?

c++ - 用标准库(静态)编译静态库链接

html - 同一行上的 Logo 和文本样式 CSS

c - 将可变长度字符串数组读取为整数

c++ - 在 C++ 函数中返回匿名实例/值

c++ - vector 中的 Intrinsics Neon Swap 元素

php - 如何在wordpress站点中为一页加载样式

html - 如何在 <a></a> (链接图片)之间调整图片大小?

从 unsigned long int 转换为 signed int,反之亦然

python - 为什么我应该使用整数而不是 float ?