if 문
if 문 (조건문)
어떤 조건이 참일 때만 코드를 실행하고 싶을 때 쓰는 게 if 문이에요. 프로그램에서 분기를 만드는 가장 기본적인 문장이죠. 조건을 만족할 때만 실행할 코드와, 그렇지 않을 때 실행할 코드를 따로 둘 수 있어요.
출처: cppreference
본문
문법
attr-spec-seq (optional) if ( expression ) statement-true |
(1) | |
attr-spec-seq (optional) if ( expression ) statement-true else statement-false |
(2) |
| 자리 | 의미 |
|---|---|
| attr-spec-seq | (C23) if 문에 적용되는 속성들의 선택적 목록. |
| expression | 모든 스칼라 타입의 표현식. |
| statement-false | 어떤 문장이든 될 수 있고(보통 복합문) expression이 0과 같으면 이 문장이 실행돼요. |
동작 방식
expression은 모든 스칼라 타입의 표현식이어야 해요.
expression이 정수 0과 같지 않으면 statement-true가 실행돼요. 형식 (2)에서는 expression이 정수 0과 같으면 statement-false가 실행돼요.
다른 선택·반복 문장들과 마찬가지로 if 문 전체는 자기만의 블록 스코프를 가져요:
enum { a , b };
int different ( void )
{
if ( sizeof ( enum { b , a }) != sizeof ( int ))
return a ; // a == 1
return b ; // b == 0 in C89, b == 1 in C99
}
(C99부터)
참고
else는 항상 **가장 가까운 앞의 if**와 연결돼요. 다시 말해 statement-true가 또 다른 if 문이라면, 그 안쪽 if에도 else 부분이 있어야 해요:
int j = 1 ;
if ( i > 1 )
if ( j > 2 )
printf ( "%d > 1 and %d > 2 \n " , i , j );
else // this else is part of if(j>2), not part of if(i>1)
printf ( "%d > 1 and %d <= 2 \n " , i , j );
goto를 통해 statement-true로 진입하면 statement-false는 실행되지 않아요.
키워드
if, else
예제
기본적인 분기와 else-if 없이도 else가 어떻게 매달리는지 확인해 볼게요.
#include <stdio.h>
int main ( void )
{
int i = 2 ;
if ( i > 2 ) {
printf ( "first is true \n " );
} else {
printf ( "first is false \n " );
}
i = 3 ;
if ( i == 3 ) printf ( "i == 3 \n " );
if ( i != 3 ) printf ( "i != 3 is true \n " );
else printf ( "i != 3 is false \n " );
}
출력:
first is false
i == 3
i != 3 is false