说是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
{
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
{
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;
}