一,break结束内循环如下代码1所示:
#include <stdio.h>
int main()
{
int i, j;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10;j++)
{
if (j == 3)
{
break;
}
}
}
printf("i = %d, j = %d \n", i, j);
return 0;
}
运行结果如下图:
二,break结束内外循环如代码2所示
#include <stdio.h>
int main()
{
int i, j;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10;j++)
{
if (j == 3)
{
break; //(第一个break)
}
}
if (j == 3)
{
break;//(第二个break)
}
}
printf("i = %d, j = %d \n", i, j);
return 0;
}
运行结果如下图所示:
三,break结束外循环如代码3所示:
#include <stdio.h>
int main()
{
int i, j;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10;j++)
{
if (j == 3)
{
}
}
if (j == 3)
{
break;
}
}
printf("i = %d, j = %d \n", i, j);
return 0;
}
运行结果如下图所示:
以上3串代码的结果都已显示。我不明白的是:
第三个代码,执行完内循环的for,再执行下面的if
#include <stdio.h>
int main()
{
int i, j;
for (i = 0; i < 10; i++)
{
/*
这里的for循环里面什么都没做,仅仅是j一直累加
*/
for (j = 0; j < 10;j++)
{
if (j == 3)
{
}
}
// 所以 运行到这里时 j=10
if (j == 3)
{
break; // 条件不满足,运行不到这里
}
// 上面的判断永远不成立,程序运行到这里后继续循环,直至i=10
}
printf("i = %d, j = %d \n", i, j);
return 0;
}
#include <stdio.h>
int main()
{
int i, j;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10;j++)
{
if (j == 3)
{
break; //(第一个break)
}
}
// 运行到这时,j==3
if (j == 3)
{
// 这里判断成立,直接跳出for (j = 0; j < 10;j++)
break;//(第二个break)
}
}
printf("i = %d, j = %d \n", i, j);
return 0;
}
话说 编译器还有一种功能 叫单步调试, 建议会运行代码后 先把怎么单步调试学会吧 这样可以让程序一步一步的执行,更能加深理解。