Developer

13.(C언어) 조건문_if,switch 본문

Programming Language/C

13.(C언어) 조건문_if,switch

DPhater 2020. 8. 1. 21:12

조건문이란 특정 조건일 때 코드를 실행 시키는 것이다.

예를들어 만약 3천원이 있다면 pc방에 간다와 같은 느낌이다. 조건문에는 if, switch ,삼항연산자가 있다.

비교 연산자

조건으로 비교연산자가 사용될 수 있다.

연산자

설명

변수1 == 변수2

변수1,2가 같다면 참

변수1 != 변수2

변수1,2가 같지 않다면 참

변수1 < 변수2

변수1이 변수2보다 작다면 참

변수1 <= 변수2

변수1이 변수2보다 같거나 작다면 참

변수1 > 변수2

변수1이 변수2보다 크다면 참

변수1 >= 변수2

변수1이 변수2보다 크거나 같다면 참

주의할 점은 이상 이하를 표시하는 연산자인데 항상 등호(=)가 뒤에 나와야 한다.

if 조건문

if조건문은 해당 조건이 참일 때 아래의 코드를 실행하는 것이다.

if(조건)

{

코드;

}

if(조건) 뒤에는 세미콜론을 붙이면 안된다는것에 주의하자

() 안에 있는 조건이 참 이라면 { } 사이의 코드를 실행하는 것이다. 만약 실행할 코드가 한줄이라면 { } 는 생략이 가능하다. 또한 조건으로는 논리연산도 사용할 수 있으며 여기에서도 0이면 거짓 0이 아닌 수 이면 참이다.

#include<stdio.h>
int main(){
	int a=3;
	if(a==1){
		printf("a는 1입니다.");
	}
	if(a==2){
		printf("a는 2입니다.");
	}
	if(a==3){
		printf("a는 3입니다.");
	}
	
	return 0;
}

코드1 실행 결과

== 연산자는 수학의 등호와 같다.

C에서는 =연산자를 대입할 때 사용하므로 같다를 나타내는 다른 연산자가 필요하므로 ==를 사용한다.

코드1의 경우 3가지 if문에서 차례대로 모두 조건이 참인지 확인한다. 실제 조건에서는 만족하지 않을때 수행하는 방법도 있어야한다. 이를 위해 else가 존재한다.

#include<stdio.h>
int main(){
	int a=3;
	if(a==1){
		printf("a는 1입니다.");
	}
	else{
		printf("a는 1이 아닙니다.");
	}
	
	return 0;
}

코드2 실행 결과

else는 항상 if와 함께 사용해야한다. 바로 위의 if문의 조건이 거짓일 경우 else의 코드를 실행하는 것이다. else또한 실행하려는 코드가 한 줄이라면 { }를 생략할 수 있다.

if와 함께 사용할 수 있는 else if도 있다. if와 else만으로는 2가지 상황에 대해서 밖에 설정할 수 없는데 else if를 사용하면 여러가지 상황에 맞춰 코드를 작성할 수 있다.

#include<stdio.h>
int main(){
	int a=3;
	if(a==1){
		printf("a는 1입니다.");
	}
	else if(a==2){
		printf("a는 2입니다.");
	}
	else{
		printf("a는 1도 아니고 2도 아닙니다.");
	}
	
	return 0;
}

코드3 실행 결과

else if를 따로 외울 필요는 없다. 앞의 if문의 조건이 거짓이라면 else로 가는데 그 else에서 다시 if문을 사용한다고 생각하면 된다.

if(조건1)

{

코드1

}

else if(조건2)

{

코드2

}

else

{

코드3

}

조건 1이 참이라면 코드1이 실행되고 아래 else if와 else는 수행되지 않는다. 만약 조건 1이 거짓이라면 if문 바로 밑의 else if로 가서 조건2를 확인한다. 조건2가 참이라면 코드2를 수행하고 맨 밑의 else는 수행하지 않는다. 만약 조건1도 거짓, 조건2도 거짓이라면 마지막 else안의 코드3이 수행된다.

switch

switch는 if문에서 else if를 사용하여 다양한 조건으로 분기하는 것을 더 쉽게 작성할 수 있게해준다. 이번에는 scnaf로 입력을 받은 값을 통해 swtich문을 실습해 보겠다.

#include<stdio.h>
int main(){
	int a;
	scanf("%d",&a);
	switch(a){
		case 0:
			printf("0입니다.");
			break;
		case 1:
			printf("1입니다.");
			break;
		default:
			printf("0도 아니고 1도 아닙니다.");
			break;
	}
	return 0;
}

코드4 실행 결과

switch문은 switch(변수) 에서 변수에 따라 실행하는 코드가 달라진다.

case 0:

case 1:

의 case는 꼭 0부터 쓰는것은 아니다. 원하는 대로 작성할 수 있다.  case 뒤에 작성된 값과 변수 값이 일치하면 해당 case의 코드를 실행하는 것이다. 코드4의 switch문을 보면 a가 0일때는 case 0:이 실행되고, a가 1이라면 case 1:이 실행되고 둘 다 아니라면 default: 가 실행되는 것이다.

변수로 char형 변수를 넣어주고 case 'b' : case 'c' : 이런식으로 문자로도 작성할 수 있다.

 

switch문 제일 마지막의 default : 는 위의 모든 case와 조건이 맞지 않을때 실행되는 부분이다.

또 각 case마다 break;가 작성되어 있는것을 볼 수 있는데 break;로 중단하지 않으면 조건이 맞는 case부터 그 다음에 있는 모든 코드가 다 실행된다.

#include<stdio.h>
int main(){
	int a;
	scanf("%d",&a);
	switch(a){
		case 0:
		case 1:
			printf("0 또는 1입니다.");
			break;
		default:
			printf("0도 아니고 1도 아닙니다.");
			break;
	}
	return 0;
}

코드5 실행 결과

조건이 일치하는 case부터 break를 만나기 전까지 모든 case가 수행된다는 것을 코드 5처럼 이용할 수도 있다.

보통 조건식이 바뀌지 않고 값만 바뀔때에는 switch, 조건식이 바뀔 때에는 if문이 적합하다.

삼항연산자

삼항 연산자란 조건 ? 값1 : 값2 의 형식으로 사용한다.

조건이 참이라면 값1 거짓이라면 값2가 결과로 나온다.

#include<stdio.h>
int main(){
	int a=4;
	int r1,r2;
	r1= a==4 ? 30 : 40;
	r2= a==5 ? 100 : 400;
	printf("%d %d",r1,r2);
	return 0;
}

코드6 실행 결과

r1= a==4 ? 30: 40;

a가 4가 맞다면 r1에 30을 대입하고 , 아니라면 40을 대입하라는 코드이다.

삼항연산자의 경우 코드 길이를 줄일 수 있지만 가독성이 좋지않아 추천하지 않는다.

'Programming Language > C' 카테고리의 다른 글

15.(C언어) 포인터  (0) 2020.08.01
14.(C언어) 반복문_for,while  (0) 2020.08.01
12.(C언어) 논리 연산자,비트 연산자  (0) 2020.08.01
11.(C언어) 형 변환  (0) 2020.08.01
10.(C언어) 연산, 연산자  (0) 2020.08.01
Comments