조건문
[전체 코드]
#include <stdio.h>
int main() {
int num;
printf("숫자 입력 : ");
scanf("%d", &num);
if (num == 7) {
printf("행운의 숫자! \n");
} else if (num == 7) {
printf("럭키 세븐 \n");
} else if (num == 4) {
printf("죽음의 숫자... \n");
} else {
printf("그냥 숫자. \n");
}
return 0;
}
[if문]
if (/* 조건 */) {
/* 명령; */
}
- 조건이 참일 때(조건 값 = 1), 명령을 실행함. 거짓이면(조건 값 = 0) 아무 일도 안 하고 중괄호 다음으로 넘어감.
[else if문]
if (/* 조건1 */) {
/* 명령1; */
} else if (/* 조건2 */) {
/* 명령2; */
}
- 조건1이 거짓이라 if문을 지나친 후에, 조건2가 참이라면 명령2를 실행함.
- 만약 조건1이 참이라면 명령1을 실행한 후 else if문은 무시.
[else문]
if (/* 조건1 */) {
/* 명령1; */
} else if (/* 조건2 */) {
/* 명령2; */
} else if (/* 조건3 */) {
/* 명령3; */
} else {
/* 명령4; */
}
- else문 이전의 조건이 모두 거짓인 경우, 명령4를 실행함.
- 도중에 조건이 하나라도 참이면 그 조건문의 명령을 실행하고 이후의 else if문들이나 else문은 무시.
관계 연산자
- 좌변과 우변의 두 값 간의 관계를 연산하고, 참이면 1을, 거짓이면 0을 출력.
- ==, !=, >=, <=, >, <
논리 연산자
[&& 논리 곱]
if (a >= 10 && a < 20) {
printf("correct!")
}
- && : 두 조건이 모두 참이면(두 조건의 값이 모두 1이면) True(1을 출력). 하나라도 거짓이면 False(0을 출력)
[|| 논리 합]
if (a < 10 || b < 20) {
printf("correct!")
}
- || : 두 조건 중 하나라도 참이면(적어도 한 조건의 값이 1이면) True(1을 출력). 둘 다 거짓이어야 False(0을 출력)
[! 반전]
if (!(a < 10)) {
printf("correct!")
}
- ! : 감싼 조건의 값을 참이면 거짓으로, 거짓이면 참으로 반전시킴(0이면 1로, 1이면 0으로)
if (!a) { // a == 0 과 같은 의미
}
- 0이 아닌 값을 0으로 변환해주는 특성을 활용해, 어떤 변수의 값이 0인지 아닌지 판별하는 조건에 활용하기도 함.
생각해보기
- 컴퓨터 연산에선 어떤 수든 그것을 0으로 나누는 행위가 금지돼있음.
[SCE, Short Circuit Evaluation]
if (a >= 10 && a < 20) {
/* 명령; */
}
- 한 조건식만 확인했는데 이미 전체 결과가 정해진 경우, 컴퓨터는 불필요한 연산을 줄이기 위해 굳이 다음 조건식을 확인하지 않음.
- 위 코드의 경우 만약 변수 a가 10보다 작다면 첫 조건이 거짓이 되고, 모든 조건이 참이어야하는 &&연산 결과가 이미 0이 되므로, 다음 조건인 a < 20은 확인하지 않게 됨.
'C언어 공부' 카테고리의 다른 글
07. 반복문 (0) | 2024.10.15 |
---|---|
05. 문자형, 입력함수 (0) | 2024.10.14 |
04. 산술연산자, 대입연산자, 비트연산자, 오버플로우 (0) | 2024.10.13 |
03. 변수 선언, 정수형, 실수형, 서식문자(변환문자) (5) | 2024.10.13 |
02. Hello, World! 분석하기 (0) | 2024.10.12 |