【问题标题】:Why does the print statement not get executed at all?为什么打印语句根本不执行?
【发布时间】:2017-09-12 15:59:18
【问题描述】:

这是程序:

#include<stdio.h>

int main()
{
    int i=(-5);
    while(i<=5){
        if (i>=0){
            break;
        }
        else{
            i++;
            continue;
        }
        printf("hello\n");
    }
    return 0;
}

我的问题是,为什么“你好”根本不打印?

【问题讨论】:

标签: c


【解决方案1】:

因为你错误地使用了continue。它基本上停止它之后的行并进入while循环的条件检查部分。这就是它不打印 hello 的原因。

从标准 $6.8.6.2

continue 语句会导致跳转到循环继续部分 最小的封闭迭代语句;也就是说,到最后 循环体。

【讨论】:

    【解决方案2】:

    你只有一个 if else 语句。在该循环内发生的所有事情都将在 if 或 else 内发生。在您的特定情况下,它将执行 else 语句,直到 'i' 为 0(继续使其返回循环条件,但在您的情况下,继续完全没有必要,因为它是 else 中的最后一条语句) , 然后它会执行 if 并跳出循环

    【讨论】:

      【解决方案3】:

      通过循环,我们有

      第一遍 i == -5,if 条件为假,else 采用分支,i 递增到 -4,继续开始 while 循环

      i == -4 到 i == -2 的第 2 到第 4 步相同

      5th pass i == -1,if 条件为假,else 采用分支,i 递增到 0,继续开始 while 循环

      第6遍i == 0,如果条件为真,从while循环中断,从main返回0

      if 分支都不会导致流通过printf 行。

      【讨论】:

        【解决方案4】:

        printf() 语句永远不会执行的原因是因为你在if 中有break 语句,在else 中有continue 语句。这两个语句对于中断或跳过程序的执行流程都很有用。

        Click here 了解何时使用这些语句。

        现在,i 被初始化为 -5。所以直到i 达到0 的值,else() 的部分代码将被执行。否则有continue 语句,它将跳过所有以下语句并开始下一次迭代。所以,printf() 语句每次都会被跳过。

        一旦i 将递增到0if() 部分代码将被执行。 If()break 语句将中断循环,程序的执行将在 main() 返回 0 时结束,因为除了 return 0 之外没有更多语句跟随循环。

        希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-09-17
          • 2023-01-30
          • 1970-01-01
          • 2021-12-13
          • 2010-11-06
          • 2017-09-05
          • 2017-01-08
          相关资源
          最近更新 更多