if语句中break用法,该怎么解决
if语句中break用法
说是break会直接跳出最内层的循环或switch语句块,不理睬if语句,那么如下程序,则是若为真直接跳出for循环,执行printf("\n")
若是如下呢,if为真时,break跳到哪里?
2.不好意思哈~还有个问题比较迷糊:
若break在if语句的else中,是不是也直接跳出最内层循环,如下例中跳出
for(int i = nLength - 1; i >= 0; i --)
------解决思路----------------------
1
break是跳出最内层循环,所以这里是跳出while(...),执行printf("B");
然后继续for(i=0;i<Max;i++)的下一次循环
2
break在else中,也同样是跳出最内层循环
------解决思路----------------------
只跳出包含if语句的那一层循环
------解决思路----------------------
总之是这样的 for(i=0;i<MAX;i++)
{
if(判断条件)
break;
}
如果执行break 那么跳出for 循环
------解决思路----------------------
在多层循环中,一个break语句只向外跳一层,执行之后的语句。
------解决思路----------------------
第一个break退出while循环,第二个退出for循环。
------解决思路----------------------
只是跳出它所属的那个循环
------解决思路----------------------
break其作用大多情况下是终止上一层的循环,以C语言来说,break在switch(开关语句)中在执行一条case后跳出语句的作用。
1. break语句对if-else的条件语句不起作用。
2. 在多层循环中,一个break语句只向外跳一层。
------解决思路----------------------
你只需要看看break属于哪个最里面的循环,就跳出谁,只跳出一次,其他继续
------解决思路----------------------
break 在哪一层循环中,跳出哪一个循环;
while(...)
{
if(0==res)//余数为0时说明除法结束,并退出,否则输出Max位小数
{
break;
}
printf("A");
}
printf("B");
break ,跳出内层循环,所以不能执行 printf(“\n”);
直接跳出循环执行printf(“B”);
------解决思路----------------------
break是跳出最内层的循环(while,for)或switch,if什么的跟他无关
------解决思路----------------------
++
还是用单步调试比较好
------解决思路----------------------
break 跳出跟它最近的一出循环,continue则是到下次循环
说是break会直接跳出最内层的循环或switch语句块,不理睬if语句,那么如下程序,则是若为真直接跳出for循环,执行printf("\n")
int main()
{
int m,n,res,i;
printf("输入被除数和除数:");
scanf("%d%d",&m,&n);
printf("%d.",m/n);//先输出整数部分和小数点
res=m%n;//取余数
for(i=0;i<Max;i++)
{
res*=10;//余数乘10
printf("%d",res/n);// 余数乘10后再与除数相除,输出第i+1位小数
res=res%n;//取余数
if(0==res)//若为真直接跳出for循环,执行printf("\n")
{
break;
}
}
printf("\n");
return 0;
}
若是如下呢,if为真时,break跳到哪里?
int main()
{
for(i=0;i<Max;i++)
{
while(...)
{
if(0==res)//余数为0时说明除法结束,并退出,否则输出Max位小数
{
break;
}
printf("A");
}
printf("B");
}
printf("\n");
return 0;
}
2.不好意思哈~还有个问题比较迷糊:
若break在if语句的else中,是不是也直接跳出最内层循环,如下例中跳出
for(int i = nLength - 1; i >= 0; i --)
bool Increment(char* number)
{
bool isOverflow = false;
int nTakeOver = 0;
int nLength = strlen(number);
for(int i = nLength - 1; i >= 0; i --)
{
int nSum = number[i] - '0' + nTakeOver;
if(i == nLength - 1)
nSum ++;
if(nSum >= 10)
{
if(i == 0)
isOverflow = true;
else
{
nSum -= 10;
nTakeOver = 1;
number[i] = '0' + nSum;
}
}
else
{
number[i] = '0' + nSum;
break;
}
}
return isOverflow;
}
------解决思路----------------------
1
break是跳出最内层循环,所以这里是跳出while(...),执行printf("B");
然后继续for(i=0;i<Max;i++)的下一次循环
2
break在else中,也同样是跳出最内层循环
------解决思路----------------------
只跳出包含if语句的那一层循环
------解决思路----------------------
总之是这样的 for(i=0;i<MAX;i++)
{
if(判断条件)
break;
}
如果执行break 那么跳出for 循环
------解决思路----------------------
在多层循环中,一个break语句只向外跳一层,执行之后的语句。
------解决思路----------------------
第一个break退出while循环,第二个退出for循环。
------解决思路----------------------
只是跳出它所属的那个循环
------解决思路----------------------
break其作用大多情况下是终止上一层的循环,以C语言来说,break在switch(开关语句)中在执行一条case后跳出语句的作用。
1. break语句对if-else的条件语句不起作用。
2. 在多层循环中,一个break语句只向外跳一层。
------解决思路----------------------
你只需要看看break属于哪个最里面的循环,就跳出谁,只跳出一次,其他继续
------解决思路----------------------
break 在哪一层循环中,跳出哪一个循环;
while(...)
{
if(0==res)//余数为0时说明除法结束,并退出,否则输出Max位小数
{
break;
}
printf("A");
}
printf("B");
break ,跳出内层循环,所以不能执行 printf(“\n”);
直接跳出循环执行printf(“B”);
------解决思路----------------------
break是跳出最内层的循环(while,for)或switch,if什么的跟他无关
------解决思路----------------------
++
还是用单步调试比较好
------解决思路----------------------
break 跳出跟它最近的一出循环,continue则是到下次循环