【问题标题】:Meaning of -1 in Programming [closed]编程中-1的含义[关闭]
【发布时间】:2013-06-12 20:08:03
【问题描述】:

我不想在这里问这个问题,但是我搜索了 SO 和 Google 都没有成功。我在很多地方都看到过诸如while(var != -1) 之类的语句和其他语句,通常是循环,包含对-1 的某种引用。使用 -1 是否有某种意义,或者它只是用作给出布尔值的整数表示,或类似的东西?如果有帮助的话,我主要在 C# 编程中看到了这一点。

【问题讨论】:

  • -1 表示负数。
  • 这是一个格式正确的问题。向您致敬。
  • 一般用于提示函数发生错误
  • 为什么这个问题被关闭了?这看起来是一个很好且易于理解的问题。提名重新开放。
  • 恕我直言,这是一个格式正确且完全有效的问题,操作员可能会感到困惑,可能需要做一些功课,但我不能说我同意关闭它的原因,也许是开始有太多人拥有他们无法正确理解或负责任地管理的权利

标签: c# variables methodology


【解决方案1】:

在 C# 中,-1 只是负数。他们将一个数字与一个数字进行比较,看看它是否确实等于负数。

整数字段应该只有正值(例如,在表示列表中的索引时)并不少见,在这种情况下,-1 有时用于表示“不是有效值”,例如,没有项目,因此没有索引。他们使用 -1 是因为 int 不可为空;他们不能分配null

理论上这可能是一个不好的做法;它使用“魔法值”来表示超出其真正应有的含义。理想情况下,如果“不存在”对于表示它的变量是有效的应该是一个可为空的整数(int?Nullable<int>),但这是一个旧约定(从其他没有可空整数功能的语言),因此很难完全消除。

【讨论】:

  • 我相信这就是我的想法。不存在的元素和空整数。据我所知,以这种方式思考它会使代码更有意义。谢谢!
  • +1。我会说 -1 直接可以并且不代表“神奇值”的唯一情况是索引集合的反向迭代边界(例如 for(index=collection.Count; index != -1; index--)... )。此外,在大多数情况下,LINQ 构造对于此类循环来说是更安全/更好的构造。
  • @AlexeiLevenkov 在这种情况下,它不是一个“神奇的价值”。 -1 不是用于表示任何东西的特殊值,它只是第一个在 decrimenting 时无效的值。也就是说,使用index >= 0 可以更清晰,同时在数学上相等。
【解决方案2】:

没有什么特别的。只是在大多数框架和库中,返回集合中元素索引的函数或方法将在您要查找的内容不在集合中时返回 -1。

例如,字符串 foo 中字符 b 的索引在 JavaScript、.NET 以及我记得的 Java 中都是 -1。

许多开发者在他们的脑海中烧毁了一个 rom,说 -1 是未找到项目的索引。现在你知道为什么了。

【讨论】:

    【解决方案3】:

    如果您知道 int 应该始终包含正值(例如项目计数或列表中的索引,-1 可以是一种“保留值”,因此您可以将计数分配给 -1只要它是-1,你就知道里面没有真正的值,有点像“null”

    除此之外,我认为 -1 没有任何特殊含义

    【讨论】:

      猜你喜欢
      • 2015-06-05
      • 2021-04-28
      • 1970-01-01
      • 2021-07-02
      • 2012-01-14
      • 1970-01-01
      • 2014-02-12
      • 2016-02-25
      • 1970-01-01
      相关资源
      最近更新 更多