You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 7-control-flow/README.md
+79Lines changed: 79 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -880,6 +880,85 @@ int main()
880
880
881
881
프로그램이 멈추지 않고 끝나는 것을 확인할 수 있습니다.
882
882
883
+
## continue문(continue statement)
884
+
885
+
continue문은 반복문 안에서 **한 번의 반복**을 종료할 수 있는 문장입니다. 한 번의 반복이라는 말이 모호하다고 느끼실 것 같은데, 정확히 어떤 의미인지 밑에서 설명하겠습니다. continue문은 break문 처럼 사용합니다.
886
+
887
+
```
888
+
continue;
889
+
```
890
+
891
+
continue문도 식이 필요하지 않습니다.
892
+
893
+
```c
894
+
#include<stdio.h>
895
+
896
+
intmain()
897
+
{
898
+
int i = 0;
899
+
while (i < 5)
900
+
{
901
+
printf("%d ", i);
902
+
continue;
903
+
++i;
904
+
}
905
+
}
906
+
```
907
+
```
908
+
0 0 0 0 0 0 ...
909
+
```
910
+
911
+
continue문을 사용하니 `continue;` 밑에 있던 `++i`가 실행되지 않고 있습니다. 코드를 자세히 분석하면 다음과 같습니다.
912
+
913
+
```
914
+
프로그램이 시작했을 때,
915
+
1. 적절한 공간을 `i`라고 이름짓고 `0`을 집어넣습니다.
916
+
2. `i < 5`의 결과가 1이 아니라면 while문을 종료합니다.
917
+
3. `i`에 들어있는 값을 출력합니다.
918
+
4. 2로 이동합니다.
919
+
5. `i`를 `1` 증가시킵니다.
920
+
6. 2로 이동합니다.
921
+
```
922
+
923
+
4번에서 2번으로 이동한다는 것을 알 수 있습니다.
924
+
925
+
즉, 모든 반복문은 `조건식 실행 -> 반복할 문장 수행`의 형태를 띠는데, continue문을 사용하면 `반복할 문장 수행`과정을 중지하고 다시 `조건식 실행`과정으로 돌아갑니다. 그래서 위 예제에서 while문 대신에 do-while문을 사용해도 비슷한 일이 일어납니다.
926
+
927
+
for문에서는 약간 다릅니다. 다음 예제를 봐주세요.
928
+
929
+
```c
930
+
#include<stdio.h>
931
+
932
+
intmain()
933
+
{
934
+
for (int i = 0; i < 3; ++i)
935
+
{
936
+
printf("%d ", i);
937
+
continue;
938
+
printf("foo ");
939
+
}
940
+
}
941
+
```
942
+
```
943
+
0 1 2
944
+
```
945
+
946
+
중간에 있는 `continue;`에서 바로 조건식 실행 과정으로 넘어갔다면 `++i`가 실행되지 않았을 때, `i`가 잘 증가하는 모습을 확인할 수 있습니다. 이처럼 for문 내에서 continue문을 사용하면, 조건식 실행 과정이 아니라 반복식 실행 과정으로 넘어갑니다. 위 예제에서 `0 1 2 `가 출력된 과정을 분석해보겠습니다.
947
+
948
+
1.`0 < 3`의 결과는 참이기 때문에,
949
+
2.`printf("%d ", i);`가 실행되어 `0 `이 출력됩니다.
950
+
3.`continue;`가 실행되어 `<실행문>`이 종료됩니다.
951
+
4.`++i;`가 실행되어 `i`가 `1`이 됩니다.
952
+
5.`1 < 3`의 결과는 참이기 때문에,
953
+
6.`printf("%d ", i);`가 실행되어 `1 `이 출력됩니다.
954
+
7.`continue;`가 실행되어 `<실행문>`이 종료됩니다.
955
+
8.`++i;`가 실행되어 `i`가 `2`가 됩니다.
956
+
9.`2 < 3`의 결과는 참이기 때문에,
957
+
10.`printf("%d ", i);`가 실행되어 `2 `가 출력됩니다.
958
+
11.`continue;`가 실행되어 `<실행문>`이 종료됩니다.
959
+
12.`++i;`가 실행되어 `i`가 `3`이 됩니다.
960
+
13.`3 < 3`의 결과는 거짓이기 때문에 for문이 종료됩니다.
961
+
883
962
## 무한 루프(infinite loop)
884
963
885
964
반복문은 조건식이 참이면 주어진 문장을 계속 수행합니다. 조건식으로 `1`이나 `2`, `20 < 100`처럼 결정값이 항상 참으로 간주되는 값인 식을 사용하면 반복문은 영원히 반복되게 됩니다. 이런 반복문을 `무한 루프(infinite loop)`라고 부릅니다. 방금 다룬 예제도 무한 루프를 사용한 프로그램입니다.
0 commit comments