一、1个for
break:直接跳出,结束循环;continue:跳出本次循环,继续下一次循环,直至循环完毕。
int arr[] = {1,2,3,4,5,6,7,8,9,10};
char ch[] = { 'a','b','c','d','e','f','g' };
void test01()
{
cout << "有一个for的break :" << endl;
for (int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
{
if (arr[i] == 5)
{
break;
}
cout << arr[i] <<" ";
}
cout << endl;
cout << "有一个for的continue :" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
if (arr[i] == 5)
{
continue;
}
cout << arr[i] << " ";
}
cout << endl;
}
代码截图:
break:当for循环值为5,触发if判断条件,break跳出for循环,循环结束。
continue:当for循环值为5,触发if判断条件,continue跳出for循环中剩下的部分,也就没有打印5。接下来,继续进行for循环,此时值为6。
二、2个for
break/continue 跳出了内部的for,还在外部的for中循环。
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
char ch[] = { 'a','b','c','d','e','f','g' };
void test02()
{
cout << "有2个for的break :" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
for (int j = 0; j < sizeof(ch) / sizeof(ch[0]); j++)
{
if (arr[i] == 5 && ch[j] == 'e')
{
break;
}
cout << arr[i] <<ch[j]<< " ";
}
cout<< "洛神!!!" << endl;
}
cout << endl;
cout << "有2个for的continue :" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
for (int j = 0; j < sizeof(ch) / sizeof(ch[0]); j++)
{
if (arr[i] == 5 && ch[j] == 'e')
{
continue;
}
cout << arr[i] << ch[j] << " ";
}
}
cout << endl;
}
代码截图:
break:当第一个for循环值为5,第二个for循环值为d,接下第二个for循环值为e时,触发if判断条件,break跳出第二个for循环。但“ 洛神!!!”在第二个for循环之外,所以打印了。接下来,第一个for循环值为6,第二个for循环值为a。也就是图中的6a。
continue:当第一个for循环值为5,第二个for循环值为d,接下第二个for循环值为e时,触发if判断条件,continue跳出第二个for循环中剩下的部分。接下来,继续进行第二个for循环,此时值为f。也就是图中的5f。
三、2个for和2个if
break/continue 跳出了内部的for,还在外部的for中循环------break、continue和if无关,只针对for循环而言。
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
char ch[] = { 'a','b','c','d','e','f','g' };
void test03()
{
cout << "有2个for2个if的break :" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
for (int j = 0; j < sizeof(ch) / sizeof(ch[0]); j++)
{
if (arr[i] == 5)
{
if (ch[j] == 'e')
{
break;
}
cout << arr[i] << ch[j] << endl;
}
cout << arr[i] << ch[j] << " ";
}
}
cout << endl;
cout << "有2个for2个if的continue :" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
for (int j = 0; j < sizeof(ch) / sizeof(ch[0]); j++)
{
if (arr[i] == 5)
{
if (ch[j] == 'e')
{
continue;
}
cout << arr[i] << ch[j] << endl;
}
cout << arr[i] << ch[j] << " ";
}
}
cout << endl;
}
代码截图:
break:当第一个for循环值为5,第二个for循环值为d,接下第二个for循环值为e时,触发if判断条件,break跳出第二个for循环。接下来,第一个for循环值为6,第二个for循环值为a。也就是图中的6a。
continue:当第一个for循环值为5,第二个for循环值为d,接下第二个for循环值为e时,触发if判断条件,continue跳出第二个for循环中剩下的部分。接下来,继续进行第二个for循环,此时值为f。也就是图中的5f。
四、2个for和3个if
break/continue 跳出了内部的for,还在外部的for中循环------break、continue和if无关,只针对for循环而言。
int arr[] = {1,2,3};
char ch[] = { 'a','b','c'};
void test04()
{
cout << "有2个for3个if的break :" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
for (int j = 0; j < sizeof(ch) / sizeof(ch[0]); j++)
{
if (arr[i] != 2)
{
if (ch[j] == 'b')
{
if (arr[i] == 3)
{
break;
}
cout << "我真帅!" << " ";
}
cout << arr[i] << ch[j] << " ";
}
cout << arr[i] << ch[j] << " ";
}
}
cout << endl;
cout << "有2个for3个if的continue :" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
for (int j = 0; j < sizeof(ch) / sizeof(ch[0]); j++)
{
if (arr[i] != 2)
{
if (ch[j] == 'b')
{
if (arr[i] == 3)
{
continue;
}
cout << "我真帅!" << endl;
}
cout << arr[i] << ch[j] << endl;
}
cout << arr[i] << ch[j] << " ";
}
}
}
代码截图:
break:当第一个for循环值为i=3,第二个for循环值为j=b时,触发break,break跳出第二个for循环。此时,第一个for循环完毕,打印到此结束。
continue:当第一个for循环值为i=3,第二个for循环值为j=b时,触发continue,continue跳出第二个for循环中剩下的部分。接下来,继续进行第二个for循环,此时值为j=c。也就是图中的3c。
五、3个for和3个if
以此可以类推,3个for和3个if中,break/continue 跳出了内部的for,还在外部的for中循环------break、continue和if无关,只针对for循环而言。