C 프로그래밍 : 현대적 접근 05 | 선택문
by 브이담곰
1 논리표현식
관계 연산자
표현식에 사용되었을 때 결과값으로 0 또는 1이 나온다.
동등 연산자
논리 연산자
2 if문
표현식의 값을 사용하여 두 가지 선택지 중 하나를 고르게 만든다.
if ( expression ) statement
복합문
만약 if문이 여러 구문을 제어하게 만들고 싶다면 복합문compound statement를 이용하면 된다.
{ statements }
복합문 내에 있는 구문이라도 반드시 세미콜론으로 끝나야하지만, 복합문 자체는 세미콜론으로 끝나지 않는다.
if (line_num == MAX_LINES) {
line_num = 0;
page_num++;
}
else 절
if 문은 else문을 포함할 수 있다.
if ( expresssion ) statement else statement
else 뒤에 나오는 구문은 괄호 안의 표현식이 값이 0일때 실행된다.
조건 표현식
조건연산자conditional operator은 두 가지 기호(?와:)로 구성되어있으며, 다음과 같이 동시에 사용된다.
expr1 ? expr2 : expr3
3개의 피연산자를 필요로하기 때문에 삼중연산자 ternary operator이라고 부른다.
int i;
int j;
int k;
i = 1;
j = 2;
k = i > j ? i : j; /* k의 값은 2이다 */
k = (i >= 0 ? i : 0) + j; /* k의 값은 3이다 */
C89와 C99에서 불 방식의 값
수년간 C언어는 제대로된 불리언형이 없었고, C89 표준도 마찬가지었다. 따라서 int 변수를 정의해 0 또는 1을 할당해서 사용하였다. 가독성을 높이기 위해 아래와 같이 매크로 정의를 하여 사용하였다.
#define TRUE (1)
#define FALSE (0)
C99에선 _Bool 형식을 제공하기 때문에, 불리언 형식이 존재한다.
<stdbool.h> 헤더파일은 true와 false라는 매크로를 갖고 있고, 각각 1과 0을 의미한다.
아래와 같이 코드를 작성할 수 있다.
flag = false;
…
flag = true;
3 switch문
switch (grade) {
case 4:
printf("훌륭해요!")
break;
case 3:
printf("좋아요!");
break;
case 2:
printf("평균이네요!");
break;
case 1:
printf("좋지 않아요!");
break;
case 0:
printf("좀 더 노력하세요!");
break;
default:
printf("잘못된 학점입니다");
break;
}
계단식 if문보다 switch문이 더 가독성이 좋고 특히 조건이 많을수록 실행속도도 더욱 빠르다.
● 제어식controlling expression. switch라는 단어 다음엔 반드시 괄호로 둘러싸인 정수 표현식이 나와야한다. C에서는 문자를 정수로 취급하므로 switch문에 사용할 수 있다. 하지만 고정소수는 사용할 수 없음.
● 조건 부호case label. 각 조건은 다음 형식으로 부호가 붙여져야한다.
● 구문statements. 각 조건부호 다음엔 한 개 이상의 구문이 올 수 있다. 굳이 복합문처럼 중괄호를 써줄 필요가 없다. 각 조건부호의 구문은 주로 break문으로 끝난다.
break 구문의 역할
break → switch문에서 나오게 만든다.
switch문은 "계산된 도약computed jump"이기 때문.
제어식이 평가될 때 제어는 switch문의 표현식의 값에 해당되는 조건부호로 도약jump하게 된다.
조건부호 = switch문 내에서의 이동지점.
switch (grade) {
case 4:
printf("훌륭해요!")
case 3:
printf("좋아요!");
case 2:
printf("평균이네요!");
case 1:
printf("좋지 않아요!");
case 0:
printf("좀 더 노력하세요!");
default:
printf("잘못된 학점입니다");
}
'programming > C' 카테고리의 다른 글
C 프로그래밍 : 현대적 접근 06 | 루프 (0) | 2024.07.27 |
---|---|
C 프로그래밍 : 현대적 접근 04 | 표현식 (0) | 2024.07.26 |
C 프로그래밍 : 현대적 접근 03 | 서식 입출력 (0) | 2024.07.26 |
C 프로그래밍 : 현대적 접근 02 | C 기초 (0) | 2024.07.26 |
C 프로그래밍 : 현대적 접근 01 | C 입문 (0) | 2024.07.25 |
블로그의 정보
농담곰담곰이의곰담농
브이담곰