#include <stdio.h>
int main(){
int a;
scanf("%d", &a);
if (90 <= a <= 100) printf("A");
else if (80 <= a <= 89) printf("B");
else if (70 <= a <= 79) printf("C");
else if (60 <= a <= 69) printf("D");
else printf("F");
}
다음과 같이 작성하면 항상 A가 출력됩니다. 인간의 논리대로라면 제대로 실행이 되어야하는데 이상합니다.
이것은 C언어 연산자의 연산방향과 관계가 있습니다..
C언어에서 <=, =>, >, < 연산자의 경우에는 연산순서가 왼쪽에서 오른쪽인데
90 <= a <= 100 를 컴파일러는 (90 <= a )<= 100 이렇게 해석하게되구요.
(90 <= a ) 이것이 참이라면 1이 되고 거짓이라면 0 이 됩니다
1이던 0 이던 1<=100, 0<= 100 이기 때문에 무조건 참이되어서 A만 출력되는 것입니다.
#include <stdio.h>
int main(){
int a;
scanf("%d", &a);
if (90 <= a && a <= 100) printf("A");
else if (80 <= a && a<= 89) printf("B");
else if (70 <= a && a <= 79) printf("C");
else if (60 <= a && a <= 69) printf("D");
else printf("F");
}
그렇기 때문에 이렇게 하고싶으시면 &&(And) 연산자를 이용하시면 됩니다.
관련 : https://pgh268400.tistory.com/23?category=1072473
관계연산자 항목
'프로그래밍 > BaekJoon' 카테고리의 다른 글
[Baekjoon] 10989번: 수 정렬하기 3 (0) | 2021.06.09 |
---|---|
[Baekjoon 파이썬] 1929번: 소수 구하기 (0) | 2021.06.03 |
[Baekjoon C언어] 10250번: ACM 호텔 (5) | 2021.05.29 |
[Baekjoon 파이썬] 14652번: 나는 행복합니다~ (0) | 2021.05.17 |
[Baekjoon 파이썬] 1237번 정ㅋ벅ㅋ (0) | 2020.01.05 |