Namespaces
Variants

if statement

From cppreference.net

조건부로 코드를 실행합니다.

코드가 특정 조건이 참일 때만 실행되어야 하는 경우에 사용됩니다.

목차

구문

attr-spec-seq  (선택 사항) if ( expression ) statement-true (1)
attr-spec-seq  (선택 사항) if ( expression ) statement-true else statement-false (2)
attr-spec-seq - (C23) if 문에 적용되는 속성 의 선택적 목록
expression - 모든 스칼라 타입의 표현식
statement-true - expression 0 과 비교하여 같지 않을 때 실행되는 (주로 복합문)
statement-false - expression 0 과 비교하여 같을 때 실행되는 (주로 복합문)

설명

expression 는 모든 scalar type 의 표현식이어야 합니다.

만약 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 // 이 else는 if (j > 2)에 속하며, if (i > 1)에 속하지 않음
        printf("%d > 1 and %d <= 2\n", i, j);

만약 statement-true goto 를 통해 진입되면, statement-false 는 실행되지 않습니다.

키워드

if , else

예제

#include <stdio.h>
int main(void)
{
    int i = 2;
    if (i > 2)
    {
        printf("i > 2 is true\n");
    }
    else
    {
        printf("i > 2 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");
}

출력:

i > 2 is false
i == 3
i != 3 is false

참고문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 6.8.5.2 if 문 (p: 154)
  • C17 표준 (ISO/IEC 9899:2018):
  • 6.8.4.1 if 문 (p: 108-109)
  • C11 표준 (ISO/IEC 9899:2011):
  • 6.8.4.1 if 문 (p: 148-149)
  • C99 표준 (ISO/IEC 9899:1999):
  • 6.8.4.1 if 문 (p: 133-134)
  • C89/C90 표준 (ISO/IEC 9899:1990):
  • 3.6.4.1 The if statement

참고 항목

C++ 문서 for if statement