为什么print语句根本没有被执行?

时间:2017-09-12 15:59:19

标签: c

这是该计划:

#include<stdio.h>

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

我的问题是,为什么&#39;你好&#39;根本没打印?

4 个答案:

答案 0 :(得分:1)

因为您错误地使用了{{1}}。它基本上停止了它之后的行并进入while循环的条件检查部分。这就是为什么它不打印你好。

来自标准 $ 6.8.6.2

  

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

答案 1 :(得分:0)

你有一个if else语句。在该循环内发生的一切都将发生在if或else中。在您的特定情况下,它将执行else语句,直到&#39; i&#39;是0(继续使它返回到循环条件,但在你的情况下,继续是完全没必要的,因为它是else中的最后一个语句),然后它将执行if和break out of循环

答案 2 :(得分:0)

通过循环,我们有

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

对于i == -4到i == -2

,第2到第4个相同

第5遍i == -1,if条件为假,else分支,i增加为0,继续开始while循环

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

if个分支都没有导致流量通过printf行。

答案 3 :(得分:0)

printf()语句永远不会执行的原因是因为break中的if语句和continue中的else语句。这两个语句对于打破或跳过程序的执行流程非常有用。

Click here了解何时使用这些陈述。

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

i增加到0后,if()部分代码将被执行。 If()break语句将打破循环,程序的执行将由main()返回0结束,因为除{{1}之外的循环之后不再有语句}}

希望它会有所帮助。