【问题标题】:Quick check on increment/decrement operators in C++快速检查 C++ 中的递增/递减运算符
【发布时间】:2013-06-28 03:21:35
【问题描述】:

列出了两个变量声明的例子:

示例 1:

x = 10;
y = ++x;

示例 2:

x = 10;
y = x++;

书上说在示例 1 中 y 等于 11,在示例 2 中 y 等于 10。我想我明白了为什么,这就是我的推理,所以请让我知道我是否有这个和/或是否有更简洁的思考方式。

在第一个示例中,y 等于 11,因为它被简单地设置为等于“x + 1”,因为增量运算符位于第一位,而在第二个示例中,y 是设置为等于 x 的原始声明,然后在 x 上分别进行递增操作。这似乎是有道理的,因为在示例 2 中,变量都在等号旁边,然后“x + 1”操作将作为对该等式的事后考虑而发生,对 y 没有影响。

【问题讨论】:

  • ++x 增加 x 并返回增加的数字,x++ 返回 x 然后增加它:P 祝你好运!
  • 表达方式比我描述的要简单得多,谢谢。

标签: c++ increment variable-declaration decrement


【解决方案1】:

你是对的。

y=++x

的意思: x++; y=x;

然而,

y=x++;

的意思: y=x; x++;

【讨论】:

    【解决方案2】:

    我想你已经明白了,但可以用更简单的词来理解。

    y = x++;
    

    在这一行之后增加 x。结果是

    y = 10, x = 11
    

    而在

    y = ++x;
    

    在此行之前增加 x。结果是

    y = 11, x = 11
    

    【讨论】:

      【解决方案3】:

      黄金法则:

      前缀递增/递减(++x 或 --x)具有从右到左的关联性。

      后缀递增/递减(x++ 或 x--)具有从左到右的关联性。

      x = 10
      
      if (x++ == 11) {        
          // Post increment
      }
      
      
      if (++x == 11 ) {
          // Pre increment
      }
      

      所以在你的情况下:

      示例 1:

      x = 10;
      y = ++x;
      

      x 的原始值(这里是 10)先递增,然后分配给 y。

      示例 2:

      x = 10;
      y = x++;
      

      x 的原始值首先分配给 y,然后递增(到 11)。

      【讨论】:

        猜你喜欢
        • 2015-10-03
        • 1970-01-01
        • 2011-02-16
        • 2011-08-29
        • 2014-03-21
        • 1970-01-01
        • 2014-04-19
        • 2010-12-01
        相关资源
        最近更新 更多