반응형

조건문

 

 

조건문이란 소스 코드에 명시한 조건이 참인지 거짓인지에 따라 계산이나 실행 내용이 달라지는 구문이다.

 

조건문을 학습하기 이전에 먼저 논리 연산자에 대해 학습해 보도록 하자.

 

아래의 사진은 논리 연산자에 대한 예제와 조건의 의미를 나타낸 사진이다.

 

-

 

 

-

 

일반적으로 값이 0일 경우에는 거짓이며

 

1일 경우에는 참이라고 설명할 때도 있지만

 

엄밀하게 따지면 C언어에서 참의 의미는 값이 0이 아닌 모든 경우이고

 

거짓의 의미는 값이 0인 경우이다.

 

-

 

※ if 문 

 

if 문 문법은 다음과 같다.

 

-

 

 

-

 

if 문에서 수행하는 문장이 1개일 경우 블록 기호 '{'와 '}'를 생략할 수 있지만

 

제어해야 하는 문장이 1개 또는 그 이상일 경우는

 

반드시 위의 사진처럼 제어의 시작과 끝을 나타낼 수 있는 블록 기호 '{'와 '}'를 표기해야 한다.

 

그리고 조건을 만족하지 않을 때 다른 문장을 실행할 수 있도록 else 구문을 함께 사용할 수도 있다.

 

-

 

 

-

 

단, else 구문은 반드시 if 문과 함께 사용해야만 한다.

 

else 구문은 단독으로는 사용할 수 없다.

 

이제 아래의 사진을 통해 if 문 예제를 봐보자.

 

-

 

test10.c
0.00MB

 

 

 

 

 

-

 

위 예제는 scanf() 함수를 이용해서 사용자로부터 데이터를 입력받은 뒤에

 

조건문을 비교하여 해당 조건을 만족할 때 문장을 실행하는 예제이다.

 

입력된 두 개의 값을 비교하여 만족하는 조건에 대한 내용이 출력되는 것을 확인할 수 있다.

 

그리고 위 사진의 코드는 아래의 사진과 같이 표기함으로써 코드의 길이를 줄일 수 있다.

 

-

 

test11.c
0.00MB

 

 

 

-

 

위의 if 문에서 각각 하나의 조건이 사용됬지만

 

조건문에서 사용되는 조건으로 다음의 사진과 같이 여러 개의 조건

 

||(OR) 또는 &&(AND) 연산으로 묶어 다음과 같이 사용할 수도 있다.

 

-

 

 

-

 

 

※ if ~ else if ~ else 문

 

if 문을 사용할 때 여러 개의 조건을 합쳐 하나의 조건으로 만들어서 사용할 수도 있지만

 

if ~ else if ~ else 구문을 사용해서 각각의 조건에 따라 서로 다른 구문을 제어하도록 사용할 수도 있다,

 

아래의 사진을 봐보자.

 

-

 

 

-

 

위의 문법을 사용할 때 주의해야 할 점 조건이 중복하여 만족될 때 조건에 맞는 모든 구문이 실행되는 것이 아니라

 

하나의 조건에 만족하게 되면 if ~ else if ~ else 구문을 모두 다 통과하게 된다는 점이다.

 

아래의 예제를 봐보자.

 

-

 

test12.c
0.00MB

 

 

 

 

-

 

위 코드의 실행 결과는 test10.c의 코드 if ~ else if ~ else 하나의 제어문으로 변경한 뒤에

 

실행하여 변수 a의 값을 1, 변수 b의 값을 0으로 입력했다면 두 번째 조건 a는 b보다 크다는 조건을 만족할 뿐만 아니라

 

다른 몇 개의 조건들도 만족하지만 두 번째 제어 블록만 실행된다.

 

if ~ else if ~ else 문으로 구성된 조건문의 경우 하나의 조건을 만족하면 

 

나머지 조건문들은 모두 다 탈출한다는 사실을 기억하도록 하자.

 

-

 

※ switch 

 

if 구문과 함께 많이 사용되는 또 다른 제어문으로 switch 문이 있다.

 

switch 문 if ~ else 문을 간결하게 만들어 주며 소스 코드의 가독성을 높여준다.

 

if ~ else 문과의 커다란 차이점

 

switch 문에서 변수로 받는 비교 대상이 되는 값은 정수형 또는 문자형 값만 가능하다는 것이다.

 

이 값을 통해서 각각 case 문에 해당하는 값과 비교하여 어떤 case 문을 실행할지 결정하는 것이다.

 

if  ~ else 문의 경우 하나의 조건을 만족하여 제어 구문을 실행하면 전체 if ~ else 구문을 빠져나가게 되지만

 

switch 문 내에서 case의 조건을 만족하는 경우를 찾으면 해당 구문만 실행하는 것이 아니라

 

그 이후 조건들까지 실행한다는 것 커다란 차이점이다.

 

그렇기에 각 case에 해당하는 구문만 실행하기 위해서

 

각 case에 해당하는 구문의 제일 마지막에 꼭 break 문을 추가해야 한다.

 

-

 

 

-

 

아래의 사진을 통해 예제를 봐보자

 

아래의 예제는 사용자로부터 정수형 값과 1개의 연산자(문자)를 입력받아

 

해당 연산자에 맞는 연산을 결과를 계산하여 출력하는 예제이다.

 

-

 

test13.c
0.00MB

 

 

 

-

 

앞의 switch 문의 문법에서 설명했듯이

 

각각의 case 구문에는 break 문을 추가하여 해당 구문 이후의 case를 실행하지 못하게 막았다.

 

break 문은 나중에 continue 문과 함께 다시 한번 설명하겠다.

반응형

'시작하지 말았어야 했던 것 > C언어 기본 문법' 카테고리의 다른 글

10. break문과 continue문  (0) 2021.02.01
8. 반복문  (0) 2021.02.01
6. 연산자(4)  (0) 2021.02.01
5. 연산자(3)  (0) 2021.02.01
4. 연산자(2)  (0) 2021.02.01

+ Recent posts