c語言的break語句只能跳出離它最近的一層循環,但是我們有時候需要跳出多層循環,以下有幾種跳出多重循環的方法:
1. 使用goto
for (int i = 0; i < MAX1; i++) { for (int j = 0; j < MAX2; j++) { if (condition) { symbol = 1; goto outloop; } } } outloop: //somecode
2. 寫成函數 return
for () { for () { for () { if(condition) { symbol = 1; return; } } } }
3. 直接修改外層循環條件
for(int i = 0; i < MAX1; i++) { for(int j = 0; j < MAX2; j++) { if(condition1) { symbol = 1; i = MAX1; break; } } }
4. 在外層循環設置判斷條件
內層循環判斷滿足條件修改標志后 外層循環進行判斷:
for(;symbol != 1 && condition1;) { for(;symbol != 1 && condition2;) { for(;symbol != 1 && condition3;) { if(condition) { symbol = 1; } } } }
5. 在大循環后面判斷標志加入break
for(;condition1;) { for(;condition2;) { for(;condition3;) { if(condition) { symbol = 1; } } if (symbol == 1){ break; } } if(symbol == 1){ break; } }
參考資料:
https://blog.csdn.net/u011475211/article/details/42041783