程序如下while(1){if(a>3){delayms(20);if(a>3)break;}} 这是单片机c语言的。和普通c一样。 break在两次if判断中出现,如果第二次if符合的话执行break,请问是不是直接跳出while1死循环外面了??详细说说,谢谢
是的。
break中断最近的一层循环。
如果下面这样:
for(; ;) // 循环1
{
for(; ;) // 循环2
break;
}
那么break中断的是 循环2
就算是循环中有 if else,那么break就会跳出离它最近的循环。
就算是下面这样有3个if,当i=33时,也会跳出 while(1)
int i = 10;
while (1)
{
if (i < 100)
{
if (i % 11 == 0)
{
if (i % 3 == 0)
{
break;
}
}
}
i++;
}
break中断最近的一层循环。
如果下面这样:
for(; ;) // 循环1
{
for(; ;) // 循环2
break;
}
那么break中断的是 循环2
就算是循环中有 if else,那么break就会跳出离它最近的循环。
就算是下面这样有3个if,当i=33时,也会跳出 while(1)
int i = 10;
while (1)
{
if (i < 100)
{
if (i % 11 == 0)
{
if (i % 3 == 0)
{
break;
}
}
}
i++;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-01-10
break确实不能用于循环语句和switch语句之外
例子中的break都在while循环之内,跳出的地方为包围break最近的一个循环。如下所示:
while(1) //下面的break跳出的是此处的循环
{
clock_1(hour1,min1,sec1);
if(key3==0||key4==0)
{
delay(10);
if(key3==0||key4==0)
break;//跳出包围他并且离他最近的循环或者switch
}
while(!key3&&!key4); //这个循环并没有包围break,所以与break没有关系
}本回答被网友采纳
例子中的break都在while循环之内,跳出的地方为包围break最近的一个循环。如下所示:
while(1) //下面的break跳出的是此处的循环
{
clock_1(hour1,min1,sec1);
if(key3==0||key4==0)
{
delay(10);
if(key3==0||key4==0)
break;//跳出包围他并且离他最近的循环或者switch
}
while(!key3&&!key4); //这个循环并没有包围break,所以与break没有关系
}本回答被网友采纳