분기문이라고도 하고 조건문이라고도 한다.
•
역할
◦
값에 따라 실행 영역을 구분하여 실행
컴퓨터는 사람이 생각하는 조건을 생각할 수 없다.
컴퓨터는 0, 1 로 실행할지 판단을 한다.
•
분기하기 위한 값의 표현 방식?
◦
조건식의 결과(0, 1)
◦
값 자체(정수값)
분기문 if ~ else
•
if ~ else 문
◦
if : 만약 ~
→ 조건식
→ 비교 연산, 논리연산, 0, 1
◦
else : 그 밖의, 또 다른
•
if ~ else의 기본 구조
if(조건식)
{
...; // 조건식이 True인 경우
}
else
{
...; // 조건식이 False인 경우
}
C
복사
•
if ~ else의 다양한 형식
1.
if(조건식) → { } 가 없으면 한 문장에만 적용
#include <stdio.h>
int main(void)
{
int var1 = 12;
if(var1 > 7)
pirntf("True\n);
return 0;
}
C
복사
2.
두 변수 사용
#include <stdio.h>
int main(void)
{
int var1 = 10, var2 = 12;
if(var1 > var2)
printf("True\n");
else
printf("False\n");
return 0;
}
C
복사
3.
else가 없는 if 문
if(조건식)
{
문장1;
문장2;
}
C
복사
•
되도록이면 { } 를 사용하는게 좋다.
•
if ~ else 복잡한 형식
1.
else if( )
if(조건식1){
문장1;
}
else if(조건식2){ // if(조건식) False 라면 실행된다.
문장2;
}
else{ // if와 else if 모두가 False 라면 실행된다.
문장3;
}
C
복사
2.
다중 조건문(분기문)
if(조건식){
if(조건식2){
문장1;
}
}
else if(조건식3){
if(조건식4){
문장2;
}
else{
문장3;
}
}
C
복사
분기문 switch ~ case
if문의 단점을 극복하고 조금은 더 세련되게 만든게 switch 문이다.
•
switch
◦
전환하다, 바꾸다, 스위치
◦
식을 나열 → 결과 값은 항상 정수
•
case
◦
경우, 예
◦
switch의 값과 동일한 값으로 제어를 옮겨 실행
•
break
◦
깨트리다, 어기다, 중단하다
◦
case 처리를 종료하고 switch문 밖으로 제어를 옮김
•
default
◦
초기 설정
◦
switch 식의 값이 case에 없을 때 실행
•
switch 문의 기본 구조
switch(식){
case 값1 :
문장1;
break; // 생략가능
case 값2 :
문장2;
break; // 생략가능
default :
문장3;
break; // 생략가능
}
C
복사
break
•
break 역할
해당 문에서 가장 가까운 while, do ~ while, for, switch 문의 실행을 종료
int main(void){
int i = 0;
while(1){
if(i == 3){
break;
}
printf("%d\n", i);
i++;
}
return 0;
}
C
복사
continue
•
continue 역할
자신과 가장 가까운 do ~ while, for, while 의 다음 반복으로 제어를 옮기되 이때 contineu가 있는 하단의 문장은 건너 뛴 상태로 제어를 옮긴다.
#include <stdio.h>
int main(void){
int i = 0;
while(i < 7){
if(i==3){
i++;
continue; // i++ 위에 있다면 프로그램이 안 끝남
}
printf("%d\n", i);
i++;
}
return 0;
}
C
복사
for 문에서 continue 제어 위치
for(1.변수초기화; 2.조건식; 3.조건 변수의 증감){
문장1;
continue;
문장2;
}
C
복사
•
실제 코드 예
int main(void){
int i;
for(i = 0; i < 8; i++){
if(i == 3){
continue; // i가 3이라면 건너 뛰고 i를 증감한다
}
printf("%d", i);
}
return 0;
}
C
복사