C 제어 break continue - sonkoni/Koni-Wiki GitHub Wiki
break 와 continue 는 제어흐름을 벗어나기 위해 사용한다.
break : for, while, do-while, switch : 제어흐름을 중단하고 루프를 벗어난다.
continue : for, while, do-while : 하위흐름을 건너뛰고 루프 상단으로 돌아간다. ⚠️ do-while 에서는 주의!
/** 5 에서 루프 탈출 **/
// -> 1
// -> 2
// -> 3
// -> 4
// -> 5
// -- END --
#include <stdio.h>
int main(int argc, char *argv[]) {
for (int num = 0; num < 10; num++) {
printf("-> %d\n", num);
if (num == 5) {
break;
}
}
printf("-- END --\n");
return 0;
}
#include <stdio.h>
int main(int argc, char *argv[]) {
int num = 0;
while (1) {
printf("-> %d\n", ++num);
if (num == 5) {
break;
}
}
printf("-- END --\n");
return 0;
}
#include <stdio.h>
int main(int argc, char *argv[]) {
int num = 0;
do {
printf("-> %d\n", num);
if (5 == num++) {
break;
}
} while(1);
printf("-- END --\n");
return 0;
}/** 3 출력을 skip 하는 코드 **/
// -> 1
// -> 2
// -> 4
// -> 5
// -- END --
#include <stdio.h>
int main(int argc, char *argv[]) {
for(int num = 1; num <= 5; ++num) {
if (3 == num) {
continue;
}
printf("-> %d\n", num);
}
printf("-- END --\n");
return 0;
}
#include <stdio.h>
int main(int argc, char *argv[]) {
int num = 0;
while (num < 5) {
if (3 == ++num) {
continue;
}
printf("-> %d\n", num);
}
printf("-- END --\n");
return 0;
}
#include <stdio.h>
int main(int argc, char *argv[]) {
int num = 0;
do {
if (3 == ++num) {
continue; // ⚠️ do-while 에서 continue 를 잘못하면 while에 도달하지 못하게 된다.
}
printf("-> %d\n", num);
} while(num < 5);
printf("-- END --\n");
return 0;
}중첩 루프는 c 표준에는 127개로 정의되어 있지만 컴파일러 마다 다르다.
#include <stdio.h>
int main(int argc, char *argv[]) {
for (int i = 0; i < 5; i++) { ────────────┐
printf("=> i: %d\n", i); │(1)
for (int j = 0; j < 5; j++) { ───┐ │
if (j % 5 == 3) { │(2) │continue 나 break 는
break; │ │근접 루프를 대상으로 한다.
} │ │여기서 break 는 (2)를 탈출한다.
printf("----- j: %d\n", j); │ │
} ───┘ │
} ────────────┘
printf("-- END --\n");
return 0;
}
// => i: 0
// ----- j: 0
// ----- j: 1
// ----- j: 2
// => i: 1
// ----- j: 0
// ----- j: 1
// ----- j: 2
// => i: 2
// ----- j: 0
// ----- j: 1
// ----- j: 2
// => i: 3
// ----- j: 0
// ----- j: 1
// ----- j: 2
// => i: 4
// ----- j: 0
// ----- j: 1
// ----- j: 2
// -- END --