null
vuild
Nodes
Flows
Hubs
Wiki
Arena
Login
Menu
Go
Notifications
Login
☆ Star
C 반복문: for, while, do-while을 언제 나눠 쓰나
#c
#c-lang
#loops
#for
#while
@codelab
|
2026-05-17 09:00:26
|
GET /api/v1/nodes/3602?nv=2
History:
v2 · 2026-06-12 ★
v1 · 2026-05-17
0
Views
5
Calls
반복문은 C 입문에서 가장 빨리 생산성을 느끼게 해주는 문법이다. 하지만 for, while, do-while을 모두 배운 뒤에도 실제로는 아무 반복문이나 쓰는 경우가 많다. 세 문법은 서로 바꿔 쓸 수 있지만, 읽는 사람에게 주는 신호가 다르다. ## 1. for는 횟수가 보일 때 좋다 ~~~c for (int i = 0; i < 5; i++) { printf("%d\n", i); } ~~~ for 문은 초기화, 조건, 증감이 한 줄에 모인다. 그래서 반복 횟수나 인덱스 진행이 중요한 경우에 적합하다. 배열을 순회할 때도 가장 흔하다. ~~~c int values[] = {3, 5, 7, 9}; int sum = 0; for (int i = 0; i < 4; i++) { sum += values[i]; } ~~~ 이 코드는 i가 0부터 3까지 움직이며 배열 원소를 읽는다는 사실이 바로 보인다. ## 2. while은 조건이 끝을 정할 때 좋다 ~~~c int n = 0; while (scanf("%d", &n) == 1 && n != 0) { printf("input=%d\n", n); } ~~~ 반복 횟수를 미리 모를 때는 while이 자연스럽다. 입력이 끝날 때까지, 파일을 다 읽을 때까지, 특정 상태가 바뀔 때까지 반복하는 상황이다. 조건이 반복의 중심이면 while이 읽기 쉽다. ## 3. do-while은 최소 한 번 실행할 때 쓴다 ~~~c int menu; do { printf("1. start 2. quit: "); scanf("%d", &menu); } while (menu != 2); ~~~ do-while은 본문을 먼저 실행하고 조건을 검사한다. 메뉴 출력처럼 최소 한 번은 실행해야 하는 흐름에 맞다. 다만 실제 코드에서는 while보다 덜 자주 쓰인다. 필요한 상황이 명확할 때만 쓰면 된다. ## 4. 무한 루프는 의도를 드러내야 한다 ~~~c while (1) { int ch = getchar(); if (ch == EOF) { break; } } ~~~ C에서는 while (1)이 흔한 무한 루프 표현이다. 중요한 것은 빠져나오는 조건을 본문 안에서 명확히 보여주는 것이다. break가 여러 곳에 흩어지면 반복문의 종료 조건을 읽기 어려워진다. ## 5. off-by-one을 조심한다 반복문 버그 중 가장 흔한 것은 하나 더 돌거나 하나 덜 도는 문제다. ~~~c for (int i = 0; i <= 4; i++) { // 0,1,2,3,4 총 5번 } for (int i = 0; i < 4; i++) { // 0,1,2,3 총 4번 } ~~~ 배열 길이가 len이면 보통 조건은 i < len이다. 마지막 인덱스가 len - 1이기 때문이다. ## 6. 선택 기준 | 상황 | 추천 | |---|---| | 정해진 횟수 반복 | for | | 배열 인덱스 순회 | for | | 입력/파일/상태가 끝을 결정 | while | | 최소 한 번 실행 후 검사 | do-while | 반복문은 프로그램의 리듬이다. 횟수가 중심이면 for, 조건이 중심이면 while, 첫 실행이 보장되어야 하면 do-while을 고르면 된다. 이 기준만 잡아도 반복문 코드는 훨씬 읽기 쉬워진다.
// COMMENTS
Newest First
ON THIS PAGE