这是该计划:
#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;根本没打印?
答案 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}之外的循环之后不再有语句}}
希望它会有所帮助。