【问题标题】:Is using short in C a bad practice在 C 中使用 short 是一种不好的做法
【发布时间】:2018-09-13 13:08:50
【问题描述】:

我有一个内存敏感项目,它使用整数将顶点的索引存储在图的密集前驱树中。 (您使用例如 Bellman Ford 生成的东西)。我知道一个事实,即我不会拥有超过 10000 个顶点的图,并且数据类型一旦创建就是不可变的。

所以在我的情况下替换是一种不好的做法

int predecessors[blah];

short predecessors[blah];

如果我的作品被用作图书馆。

【问题讨论】:

  • 我想说你应该typedef short vertex_id_t; 能够轻松替换类型。否则,只要它提供真正的性能/内存消耗改进,我认为它没有问题。
  • 寻找最佳实践来代替常识是一种不好的做法。
  • 我的荣幸。如果您必须两次由不同的人撤消对您的问题的相同编辑,那么我建议您开始考虑为什么您的问题似乎会邀请该编辑...(我承认我只是在您之后才意识到上一次的编辑+撤消解开我的。)
  • 如果您想将计数的宽度限制为 16 位,请使用 uint16_t(或 int16_t,如果您需要 -1 作为某种标记,而 0xFFFF 不会这样做)。跨度>
  • 一般来说,对于“使用 X 是一种不好的做法”这个问题(其中 X 是语言的组成部分),答案是“不,这取决于"。

标签: c int short


【解决方案1】:
  1. 避免过早优化。衡量使用short 而不是int 的影响,然后根据该信息做出决定。

  2. 正如 @HolyBlackCat 所说 - 考虑使用 typedef(或类似的),以便在更改需求时可以更改底层类型(即 shortint)。

  3. 如果您使用short,请添加健全性检查以避免有人,有一天在您的库中提供 100.000 个顶点并且没有意识到它无法处理这些(直到一个无声的失败变成一个非常非无声的失败,代价高昂设备大声撞击某物)。

  4. 明确说明您最多只能处理 X 个顶点。

【讨论】:

    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 2021-05-31
    • 2011-12-22
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多