首页 > 解决方案 > 花括号使for循环只运行一次?

问题描述

假设我有一个伪代码和 sum = 3

for i = (1 to 3)
    sum = sum + i
    return sum

这将返回 9,因为 3+1=4, 4+2=6, 6+3=9


但是当这样做时

for i = (1 to 3) {
    sum = sum + i
    return sum
}

返回的总和是 4?为什么花括号以某种方式使 for 循环只运行一次?

标签: javac++c

解决方案


如果您有以下 C 代码:

for (int i=1; i<=3; ++i)
   sum = sum + i;
   return sum;

那么你有一种误导性的写作方式

for (int i=1; i<=3; ++i)
   sum = sum + i;

return sum;

这是因为上面的代码片段都等价于以下代码:

for (int i=1; i<=3; ++i) {
   sum = sum + i;
}

return sum;

循环体for要么是一条语句,要么是一个块。大多数语言不认为缩进级别很重要。(Python 是一个明显的例外。)

相反,以下代码执行循环的return每一次循环,而不是在循环完成后执行:

for (int i=1; i<=3; ++i) {
   sum = sum + i;
   return sum;
}

好吧,当然,它永远不会到达循环的第二遍。


推荐阅读