【问题标题】:Incrementing array index inline内联递增数组索引
【发布时间】:2013-04-15 10:15:46
【问题描述】:

我是 C 的新手。很抱歉提出这样一个基本问题。

int ArrayIndex = 0;
int intArray[ArrayIndex++] = somevalue;

我读过一本书说何时执行后缀递增/递减并不是一个简单的问题。这本书还含糊地提到了一个名为sequence points 的概念来回答这个问题。它说更新值[递增/递减]将发生在前一个和下一个序列点之间。此类序列点的示例是表达式语句的结尾。

我的问题是,在所有编译器/平台中,上述代码 sn-p 是否总是将 some value 分配给数组索引零并增加 ArrayIndex?是否有可能先增加 ArrayIndex,然后将某个值分配给 intArry[1];?

有人能解释一下吗?

【问题讨论】:

    标签: c


    【解决方案1】:

    我的问题是,上面的代码 sn-p 是否总是分配一些值 数组索引为零并递增 ArrayIndex,总共 编译器/平台?

    回答:是的

    ArrayIndex 是否有可能先递增然后再递增 某个值被分配给 intArry[1];?

    答案:如果你使用

    int intArray[++ArrayIndex] = somevalue;
    

    这将增加ArrayIndex,然后将值分配给数组索引1

    【讨论】:

      【解决方案2】:

      ++ArrayIndex 增量 ArrayIndex 并计算为ArrayIndex 的新值。

      ArrayIndex++ 计算为ArrayIndex 的旧值,并递增ArrayIndex

      这应该可以回答您的问题。 (提示:答案是肯定的)。

      【讨论】:

      • 这里的命名约定至少可以说是无关紧要的。
      • @AlexeyFrunze 你是对的。只要他始终如一,这不应该打扰。
      • 不是这样的。首先,没有询问命名约定。其次,它们是主观的或特定于团队/项目的。第三,由于选择的命名约定,该问题的可读性不低(例如您在其他一些问题中看到的格式不佳的长代码)。所以,根本没有一个客观的理由来指出它。
      • @AlexeyFrunze 有时,如果您添加额外的注释/改进,即使没有被询问,也不会受到伤害。但是,正如我之前所说,在这种情况下我同意你的看法。我不应该提到它,这就是我编辑答案并将其删除的原因。
      • 有时是的,我同意,但这次不行。
      猜你喜欢
      • 1970-01-01
      • 2019-06-09
      • 2021-09-30
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 2018-09-18
      • 2011-11-05
      • 2011-01-01
      相关资源
      最近更新 更多