【问题标题】:Calculate sum with ++ and order of calculation [closed]用++和计算顺序计算总和[关闭]
【发布时间】:2018-05-18 14:07:11
【问题描述】:

我在下面有这个代码sn-p。描述总和将是0 是否正确,因为sum++ 将被忽略,因为sum += 的分配将在增加值之前添加0?或者这是如何最好地描述的?我的意思是,如果我使用sum += sum + 1,结果会有所不同。

int sum = 0;
for (int i = 0; i < 10; i++)
{
   sum += sum++;
}

// Sum has end value 0

【问题讨论】:

  • 那么这里的问题是什么?你回答并证明了你自己的问题......
  • 操作顺序。如果你切换到 sum += ++sum 会发生什么
  • 我认为问题是如何;总和+=总和++;不同于 sum += sum + 1;
  • 我认为你是对的,是的。本质上,它将 sum 加载到内存位置 1 中。然后它再次将 sum 加载到内存位置 2。然后将内存位置 2 加 1 并将结果存储到 sum(不更新内存位置 2)。然后,它将内存位置 1 和 2(仍为 0)相加,并将其结果分配给 sum,因此 sum 再次为 0。
  • sum += ++sum;怎么样

标签: c#


【解决方案1】:

sum++ 会增加值,但它会返回在增加之前的值。 ++sum 也会增加值,但会在增加后返回值

您可以将sum++ 视为返回值,然后增加值(即使这不是发生的情况)

您认为++sum 增加了值然后返回它。

所以,就最终结果而言,sum += ++sum sum += sum + 1 相同。

在您的示例中,sum++ 返回零,sum 设置为两个 1,但随后您将其设置回 0 并重复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多