비교문: if
Chan-Su Shin
if 문
• expr가 참이면 (0이 아니면) statement가 실행되고, 거짓이면 (0이면) next statement부터 실행된다.
if (expr)
statement;
next statement;
if ( grade >= 90)
printf(“Congratulation\n”);
printf(“ Grade is %d\n”, grade);
예제 (if 문)
• 복합문은 여러 문장들을 하나의 단위로 그룹화하는 것을
의미한다.
복합문은 { …. } 로 표기
• 복합문 자체로 하나의 문장이다.
• (3 + 5) * 2
• Indentation (들여쓰기)
if ( j < k ) min = j;
if ( j < k )
printf(“최소값 = %d\n”, min);
if ( j < k ) { min = j;
printf(“최소값 = %d\n”, min);
}
복합문
잘못 사용된 if 문
if j < k
min = j;
if (j = k)
printf(“ j and k are same\n”);
if (3 – 1)
printf(“Hi!\n”);
if else 문
if ( expr )
statement;
else
statement;
next statement;
if ( expr ) {
statements;
}
else {
statements;
}
next statement;
예제 (1 – if else 문)
if ( x < y ) min = x;
else
min = y;
printf(“최소값 = %d\n”, min);
if ( a == 1 ) if ( b == 2 )
printf(“ nothing \n”);
else
printf(“ everything\n”);
예제 (2 – 애인고르기)
if ( age < 25 )
if ( height >= 180 )
if ( handsome )
printf( “ 완벽한 걸 \n”);
else
printf( “ 괜챦은 걸 \n”);
else
printf(“ 글쎄… \n”);
else
printf(“ 이게 뭐야 \n”);
if - else if - else 문
if ( expr ) {
statements;
}
else if (expr) { statements;
} … else {
statements }
next statement;
if (n < 0)
printf(“음수\n”);
else if (n < 10)
printf(“0이상 10미만\n”);
else if (n < 20)
printf(“10이상 20미만\n”);
else
printf(“20이상\n”);
if 문 연습
• ax2 + bx + c = 0의 세 상수를 아래와 같이 입력 받는다.
int a, b, c;
scanf(“%d%d%d”, &a, &b, &c);
• 그러면 근의 공식을 이용하여 2차식의 근을 계산해보자.
– 두 가지 경우: 실근(근이 두 개일 때와 하나일 때), 허근인 경우.
– 제곱근을 구하기 위해선, <math.h>를 include한 후 sqrt 함수를 호출할 것.
조건부 연산자 ( ? : )
if ( y < z ) x = y;
else
x = z;
x = ( y < z ) ? y : z;
A = ( expr1 ) ? ( expr2 ) : ( expr3 );
1. expr1을 제일 먼저 평가한다.
2. 참이면 expr2를 평가하여 그 결과값을 A에 배정한다.
3. 거짓이면 expr3을 평가하여 그 결과값을 A에 배정한다.
조건부 연산자 ( ? : )
순위 연산자 결합법칙
1
( ) ++(후위) -- (후위)
좌에서 우로2
+(단항) -(단항) ++(전위) --(전위)
우에서 좌로3
* / %
좌에서 우로4
+ -
좌에서 우로5
? :
좌에서 우로6
= += -= *= /= …
우에서 좌로조건부 연산자 ( ? : )
min( x, y ) ( x < y ) ? x : y min( x, y, z )
char a = ‘a’, b = ‘b’;
int i = 1, j = 2;
double x = 7.07;
i == j ? a – 1 : b + 1 j % 3 == 0 ? i + 4 : x j % 3 ? i + 4 : x
(i == j) ? (a – 1) : (b + 1) ((j % 3) == 0) ? (i + 4) : x
(j % 3) ? (i + 4) : x
99 7.07
5.0
int double double