C언어 if문에서 뭐가 잘못되었는지 모르겠어요. ( if (0 < num1 < 45) )

조회수 422회
#include <stdio.h>

void main()
{

    int num1;

    scanf_s("%d", &num1);

    if (0 < num1 < 45)
        printf("a");

    else if (90 < num1 < 160)
        printf("b");

    else
        printf("없음.");
}

뭐가 잘못되었는지 a만 나오고 다른건 안나오네요.

  • if 조건식을 저렇게 사용하시면 0 < num1 이 먼저 평가되고 평가된 결과와 45 가 비교돼요. toyseed 2021.4.8 20:24
  • 예를 들어서 50을 입력했을때 True(0 < 50) < 45라서 1 < 45가 비교되나요?(정수 1은 True, 0은 False입니다.) noah0508 2021.4.9 07:57
  • 네 맞습니다. toyseed 2021.4.9 14:39

1 답변

  • c언어에서는 0 < num1 < 45와 같이 사용할 수 없구요. 논리 앤드 연산자(&&)를 사용하여 0 < num1 && num1 < 45로 사용해야 합니다.

    && 연산자는 왼쪽과 오른쪽이 모두 참일 때에만 참을 반환하는 연산자 입니다. 따라서 0 < num1 && num1 < 45는 num1이 0보다 크고, num1이 45보다 작을 때에만 참이 됩니다.

    아래 코드 및 결과 참고하세요.

    #include <stdio.h>
    
    int main()
    {
        int num1;
        scanf_s("%d", &num1);
    
        if (0 < num1 && num1 < 45)
            printf("a");
        else if (90 < num1 && num1 < 160)
            printf("b");
        else
            printf("없음.");
    
        return 0;
    }
    
    • 결과

    이미지

    이미지

    이미지

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 파이썬에선 if( 0 < num < 45 ) 같은 거 잘 됩니다. 어서 파이썬으로 넘어오셔야 할 듯. ㅎㅎ. nowp 2021.4.9 08:51

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)