if 문

Jaemyeong Lee·2024년 8월 1일
0

FastCampusC++

목록 보기
15/78

if 문에 대한 설명 및 코드 정리

if 문은 조건에 따라 코드를 실행하거나 건너뛰게 하는 제어 구조입니다. 조건이 참(true)이면 특정 코드 블록이 실행되고, 거짓(false)이면 다른 코드 블록이 실행됩니다.

기본적인 if

int num = 0;
if (num == 0)
    cout << "Executed 0" << endl;

if (num != 0)
    cout << "Executed 1" << endl;
  • if (num == 0): 조건이 참이므로 "Executed 0"이 출력됩니다.
  • if (num != 0): 조건이 거짓이므로 아무 것도 출력되지 않습니다.

if 문과 세미콜론

int num = 0;
if (num != 0); 
    cout << "wow" << endl;
  • if (num != 0); 뒤에 세미콜론이 있어서 조건이 거짓이어도 다음 코드가 항상 실행됩니다.

조건 대입 방지

int num = 0;
// num = 0 표현식의 결과는 0이므로 조건은 항상 거짓
if (num = 0)
    cout << "wow" << endl;

// 방지 방법
if (0 == num)
    cout << "wow" << endl;
  • 첫 번째 if 문은 num = 0이므로 항상 거짓이 됩니다.
  • 두 번째 if 문은 0 == num으로 작성되어 대입 연산을 방지합니다.

복합문

int num = 0;
if (num != 0)
{
    cout << "wow" << endl;
    cout << "wow1" << endl;
}
  • 중괄호 {}는 여러 개의 문장을 하나로 묶는 역할을 합니다.
  • 조건이 참일 때만 {} 내부의 모든 문장이 실행됩니다.

중첩 if

int num0 = 0;
int num1 = 1;

if (num0 == 0)
    if (num1 == 1)
        cout << "wow" << endl;

if (num0 == 0)
{
    if (num1 == 1)
    {
        cout << "wow" << endl;
    }
}

if (num0 == 0 && num1 == 1)
    cout << "wow" << endl;
  • 첫 번째는 중첩된 if 문입니다.
  • 두 번째는 중첩된 if 문을 중괄호로 묶은 것입니다.
  • 세 번째는 논리 연산자 &&를 사용하여 단일 if 문으로 작성된 것입니다.

시퀀스 포인트

int num0 = 0;
if (num0++ == 0 && num0++ == 1)
{
    cout << num0 << endl; // 출력: 2
}

num0 = 0;
if (num0++ + num0++ == 1)
{
    cout << num0 << endl; // 정의되지 않은 행동
}
  • num0++ == 0 && num0++ == 1&&가 시퀀스 포인트이기 때문에 올바르게 평가됩니다.
  • num0++ + num0++ == 1는 평가 순서가 정의되지 않아 정의되지 않은 행동입니다.

if - else

int num0 = 0;
if (num0 == 0)
    cout << "num0 == 0" << endl;
else
    cout << "!(num0 == 0)" << endl;

cout << (num0 == 0 ? "num0 == 0" : "!(num0 == 0)") << endl;
  • if (num0 == 0), 조건이 참이면 "num0 == 0" 출력, 거짓이면 "!(num0 == 0)" 출력.
  • 삼항 연산자 ?를 사용한 동일한 표현.

if - else if - else

int num0 = 1;
if (num0 == 0)
{
    cout << "num0 == 0" << endl;
}
else if (num0 == 1)
{
    cout << "num0 == 1" << endl;
}

int score;
cin >> score;
char grade;
if (score == 100)
    grade = 'A';
else if (90 <= score && score < 100)
    grade = 'B';
else if (80 <= score && score < 90)
    grade = 'C';
else
    grade = 'D';
cout << grade << endl;
  • else if는 여러 조건을 순차적으로 체크할 때 사용됩니다.
  • 점수에 따라 등급을 부여하는 예제.

드모르간의 법칙

int score0 = 90;
int score1 = 80;

if (score0 >= 90 && score1 >= 90)
    ;
else
    cout << "fail0" << endl;

if (!(score0 >= 90 && score1 >= 90))
    cout << "fail1" << endl;
if (!(score0 >= 90) || !(score1 >= 90))
    cout << "fail2" << endl;
if (score0 < 90 || score1 < 90)
    cout << "fail3" << endl;
  • 드모르간의 법칙: !(A && B) == !A || !B, !(A || B) == !A && !B.
  • 동일한 논리를 다른 형태로 표현.

if 문 안에서 변수 선언

int num0, num1;
if (int count = scanf("%d %d", &num0, &num1))
    printf("count : %d\n", count);
else
    printf("fail count : %d\n", count);

// C++17 이상에서 가능
if (int num0, num1; int count = scanf("%d %d", &num0, &num1))
    printf("count : %d\n", count);
else
    printf("fail count : %d\n", count);
  • if 문 안에서 변수 선언 및 초기화.
  • count 변수는 if 문 블록 내에서만 유효.

결론

if 문은 조건에 따라 프로그램의 흐름을 제어하는 중요한 제어 구조입니다. 이를 사용하여 다양한 조건을 체크하고, 조건에 따라 다른 작업을 수행할 수 있습니다. 위의 예제와 설명을 통해 if 문과 관련된 다양한 사용법을 이해할 수 있습니다.

profile
李家네_공부방

0개의 댓글