if문은 프로그램이 표현식의 값을 사용해 2가지 선택지 중 하나를 고르게 만듦.
if ( expression ) statement
- 표현식을 감싸고 있는 괄호는 필수임.
- 표현식의 값이 참이면(0이 아니라면), 괄호 뒤의 구문이 실행됨.
📌 복합문
- if문이 여러 구문을 제어하게 만들고 싶을 때 사용하는 구문
복합문이 if 문에 사용될 때 ex)
if (line_num == MAX_LINES) {
line_num = 0;
page_num++;
}
- 구조상 구문 1개만 사용해야하지만, 실제로는 여러 구문이 필요할 때 자주 사용됨.
📌 else 절
- if문은 else문을 포함할 수 있음.
if (i > j)
max = i;
else
max = j;
- if문 중복도 가능함.
if (i > j) {
if (i > k)
max = i;
else
max = k;
} else {
if (j > k)
max = j;
else
max = k;
}
✅ 굳이 중괄호를 사용하자. if문이나 else문의 구문에 손쉽게 다른 구문을 추가할 수 있음. 프로그램 수정이 용이하고, 두 번째는 if문이나 else문을 사용할 때 깜빡하고 중괄호를 사용하지 않아 발생하는 에러를 방지할 수 있음.
📌 계단식 if문
- 조건문을 사용할 때 언제나 조건이 1개일 수는 없음. 여러가지 조건을 판별해보고, 참인 값이 나오면 거기서 멈추는 경우가 대부분일 것인데, 이때 '계단식'으로 if문을 사용하는 것이 좋음.
if ( expression ) {
statement
} else if ( expression ) {
statement
…
} else if ( expression ) {
statement
} else {
statement
}
✅ 계단식 if문은 새로운 유형의 구문이 아니라, 기존의 것들을 조합해 활용한 구문임.
🌐 [프로그래밍] 중개 수수료 계산하기
- 주식을 브로커를 통해 사고 파려면 수수료가 발생함. 이때, 수수료는 거래된 주식의 가치에 따라 증가폭이 달라짐.
- 수수료 책정 방식은 아래와 같음.
🌐 broker.c
- 사용자가 거래 규모를 입력하면, 이에 따른 수수료를 출력하는 프로그램
/* Calculates a broker's commission */
#include <stdio.h>
int main(void)
{
float commission;
float value;
printf("거래값를 입력하시오: ");
scanf("%f", &value);
if (value < 2500.00f) {
commission = 30.00f + .017f * value;
} else if (value < 6250.00f) {
commission = 56.00f + .0066f * value;
} else if (value < 20000.00f) {
commission = 76.00f + .0034f * value;
} else if (value < 50000.00f) {
commission = 100.00f + .0022f * value;
} else if (value < 500000.00f) {
commission = 155.00f + .0011f * value;
} else {
commission = 255.00f + .0009f * value;
}
if (commission < 39.00f) {
commission = 39.00f;
}
printf("수수료: $%.2f\n", commission);
return 0;
}
📌 누구의 else인가?
- if문을 여러 겹으로 사용할 때 else문을 조심해야 함.
ex)
if (y != 0)
if (x != 0)
result = x / y;
else
printf("에러: y는 0과 같습니다\n");
Q. else의 짝은 1번 줄의 if, 2번 줄의 if중 누구일까?
A. 들여쓰기로 봐서는 1번 줄의 if와 짝인 걸로 보임. 하지만, C언어에서 가장 가까운 if와 else가 짝지어짐.
✅ 중괄호로 작성하는 버릇을 들이자.
📌 조건 표현식
- C의 if문은 조건의 결과값에 따라 1개 or 여러 개의 행동을 할 수 있게 해줌.
+ C에서는 표현식이 조건의 결과값에 따라 1개 or 여러 개의 값을 만들어내는 연산자가 존재함.
- 조건연산자는 2가지 기호(?, :)로 구성되어 있으며, 동시에 사용됨.
expr1 ? expr2 : expr3
- 만약 expr1이 참이면 expr2이고, 거짓이면 expr3이라는 뜻
아래의 1과 2는 같은 의미를 가진 코드임.
// 1
if (i > j) {
return i;
} else {
return j;
}
// 2
return i > j ? i : j;
📌 C89에서의 불 방식의 값
1) int 변수를 정의해 0 또는 1을 할당하는 방식
2) TRUE, FALSE라는 이름으로 매크로정의 하는 방식
#define TRUE (1)
#define FALSE (0)
📌 C99에서의 불 방식의 값
- _Bool 형식을 제공하기에, 사실상 불리언형이 존재한다고 봐야함.
_Bool flag;
<stdbool.h> 헤더파일에 true, false 매크로를 갖고 있고 이는 각각 1, 0을 의미함.
💡 본 내용은 K.N.King의 C Programming: A Modern Approach 책을 참고하였습니다.
'📚 STUDY > 🔥 C' 카테고리의 다른 글
Q&A (들여쓰기 방식, switch 문 작성 방식) (0) | 2024.09.05 |
---|---|
[5-3] switch문 (0) | 2024.09.05 |
[5-1] 논리표현식 (0) | 2024.09.04 |
Q&A (pow, fmod, 연산자) (1) | 2024.09.03 |
[4-5] 표현문 (0) | 2024.09.03 |