【问题标题】:Need Explanation for C++ output [closed]需要 C++ 输出的解释 [关闭]
【发布时间】:2020-10-01 08:05:28
【问题描述】:
#include <iostream>
int main()
{
int i = 100,sum=0;
for(int i =0; i!=10;++i)
    sum+=i;
std::cout<<i<<" "<<sum<<std::endl;
return 0 ;
}

我是 C++ 的初学者,代码的输出是 100 45 。我将 100 理解为它的块范围,但为什么是 45?

【问题讨论】:

  • 你期待sum 是什么?
  • 0 + 1 + 2 + ... + 9 的总和是多少?
  • 谢谢,我明白了:)
  • 你应该使用调试器来解决这类问题(甚至是笔和纸),并检查变量如何从一条指令变为另一条指令。

标签: c++ loops for-loop


【解决方案1】:

由于sum 是在外部范围内声明的,而不是在循环内部重新定义,因此循环在外部sum 上运行,这意味着它的值最终等同于范围为 i 的循环的累积值,即: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45

i 变量改为在循环范围内重新定义 (int i=0;),因此而在循环块中,它从 0 变为 9,但一旦退出循环,i 变量就会被考虑为分配了 100 的变量。

下次,如果您有工具,我建议您使用调试器单步执行循环并查看变量和值在做什么。

【讨论】:

    【解决方案2】:

    在它之后显示isum。 在循环开始i=100 并在循环范围内声明另一个i 时,当代码超出循环范围时,它会显示第一个i 的值,即100和sum = 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多