# continue, break
2020 Clang, 0w1
---
### continue?
```c++
while (條件 X) {
事件 A
if (條件 Y) continue;
事件 B
}
```
=>
```c++
1. 條件 X 為真?若否,跳到 5 // while (條件 X) {
2. 進行 A // 事件 A
3. 條件 Y 為真?若是,跳到 1 // if (條件 Y) continue;
4. 進行 B // 事件 B
5. (迴圈之後) // } ...
```
---
### Why continue?
題目:枚舉所有 100 以下自然數中 2 的倍數
```c++
int i = 0;
while (i + 1 <= 100) {
i = i + 1;
if (i % 2 == 0) {
cout << i << endl;
}
}
```
----
題目:枚舉所有 100 以下自然數中同時是 2 和 3 的倍數
```c++
int i = 0;
while (i + 1 <= 100) {
i = i + 1;
if (i % 2 == 0) {
if (i % 3 == 0) {
cout << i << endl;
}
}
}
```
----
題目:枚舉所有 100 以下自然數中同時是 2 和 3 和 5 的倍數
```c++
int i = 0;
while (i + 1 <= 100) {
i = i + 1;
if (i % 2 == 0) {
if (i % 3 == 0) {
if (i % 5 == 0) {
cout << i << endl;
}
}
}
i = i + 1;
}
```
----

----
題目:枚舉所有 100 以下自然數中同時是 2 和 3 和 5 的倍數
```c++
int i = 0;
while (i + 1 <= 100) {
i = i + 1;
if (i % 2 != 0) continue;
if (i % 3 != 0) continue;
if (i % 5 != 0) continue;
cout << i << endl;
}
```
---
### continue in 白話文

---
### break?
```c++
while (條件 X) {
事件 A
if (條件 Y) break;
事件 B
}
```
=>
```c++
1. 條件 X 為真?若否,跳到 5 // while (條件 X) {
2. 進行 A // 事件 A
3. 條件 Y 為真?若是,跳到 5 // if (條件 Y) break;
4. 進行 B // 事件 B
5. (迴圈之後) // } ...
```
---
### Why break?
題目:若存在,輸出 100 以下的自然數中第一個 2 的倍數
```c++
int i = 0;
while (i + 1 <= 100) {
i = i + 1;
if (i % 2 == 0) {
cout << i << endl;
break;
}
}
```
----
題目:若存在,輸出 100 以下的自然數中第一個同時是 2, 3, 5 的倍數
```c++
int i = 0;
while (i + 1 <= 100) {
i = i + 1;
if (i % 2 != 0) continue;
if (i % 3 != 0) continue;
if (i % 5 != 0) continue;
cout << i << endl;
break;
}
```
---
### break in 白話文

---
### 多重迴圈裡的 continue
* 只會 continue 到第一個包住他的迴圈
----
```c++
int i = 0;
while (i + 1 <= 3) {
i = i + 1;
int j = 0;
while (j + 1 <= 3) {
j = j + 1;
if (j % 2 == 1) continue;
cout << j << endl;
}
}
```
=>
```c++
2
2
2
```
---
### 多重迴圈裡的 break
* 只會 break 出第一個包住他的迴圈
----
```c++
int i = 0;
while (i + 1 <= 3) {
i = i + 1;
int j = 0;
while (j + 1 <= 3) {
j = j + 1;
if (j == 2) break;
cout << j << endl;
}
}
```
=>
```c++
1
1
1
```
---
### 避免縮排地獄就對了

---
### do-while + break 解 if 縮排地獄
```c++
if (條件 X) {
事件 A
if (條件 Y) {
事件 B
if (條件 Z) {
事件 C
if () ...
}
}
}
```
----
```c++
do {
if (not 條件 X) break;
事件 A
if (not 條件 Y) break;
事件 B
if (not 條件 Z) break;
事件 C
if () ...
} while (0);
```
{"metaMigratedAt":"2023-06-15T05:09:53.342Z","metaMigratedFrom":"Content","title":"continue, break","breaks":true,"contributors":"[{\"id\":\"dec33987-0cd9-4214-9d3e-825262921019\",\"add\":5613,\"del\":5052}]"}