【发布时间】:2021-08-11 06:34:03
【问题描述】:
循环中的 break 语句(由 if 语句包围)是否也会使控制权脱离外部 if 语句?我想以特定模式打印数组并遇到这种情况。当计数超过数组大小时,我想摆脱“打印”。最初我将 break 语句放在循环内以及它的外部 if 语句内,它工作正常。
//printing the pattern
int space=1,spacecount=4,x=2,xcount=1,arrcount=0;
for(i=1;i<=8;i++)
{
if(i==space)
{
printf(" ");
for(j=1;j<=spacecount;j++)
{
printf("%d",arr[arrcount++]);
if(arrcount>=size)
break;
}
if(arrcount>=size)
break;
printf("\n ");
for(j=1;j<=spacecount;j++)
{
printf("%d",arr[arrcount++]);
if(arrcount>=size)
break;
}
if(arrcount>=size)
break;
printf("\n");
space=space+2;
spacecount--;
}
if(i==x)
{
for(j=1;j<=xcount;j++)
{
printf("%d\n",arr[arrcount++]);
if(arrcount>=size)
break;
}
if(arrcount>=size)
break;
x=x+2;
xcount++;
}
if(arrcount>=size)
break;
}
然后我删除了外部 if 中的 break 语句,这似乎也给出了相同的结果。
//printing the pattern
int space=1,spacecount=4,x=2,xcount=1,arrcount=0;
for(i=1;i<=8;i++)
{
if(i==space)
{
printf(" ");
for(j=1;j<=spacecount;j++)
{
printf("%d",arr[arrcount++]);
if(arrcount>=size)
break;
}
printf("\n ");
for(j=1;j<=spacecount;j++)
{
printf("%d",arr[arrcount++]);
if(arrcount>=size)
break;
}
printf("\n");
space=space+2;
spacecount--;
}
if(i==x)
{
for(j=1;j<=xcount;j++)
{
printf("%d\n",arr[arrcount++]);
if(arrcount>=size)
break;
}
x=x+2;
xcount++;
}
if(arrcount>=size)
break;
}
但我一直认为 break 语句将控制权从最近的循环中带出来?我希望对此有更清楚的了解。到底发生了什么,为什么会奏效?任何帮助表示赞赏。
编辑:好的,我尝试了更多输入,但打印的尺寸超出了我想要的尺寸。所以我最初的想法和你们所说的都是真的。谢谢。
【问题讨论】:
-
只有封闭循环(或
case块)。 -
你需要认真地修正你的编码风格,并采用一种一致、通用的风格。您的缩进和大括号位置到处都是,使代码难以阅读。
-
伦丁写的。请修正缩进。这读起来很混乱。
-
“我现在应该删除帖子吗?” - 不,尽管如此,但在评论部分而不是帖子中提出这些问题。请修正您的代码的缩进。
-
我对可怜的意图不好。会修复它。 “请在评论部分提出此类问题”注意
标签: c loops if-statement break