오묘한 c언어(feat.코드업 기초 100제, 1069)

Root(√)·2020년 11월 8일
0

끄적이

목록 보기
11/15

코드업 기초100제를 풀고 있는데.. 요즘 C언어를 공부하고 있어서 모두 C로 풀고 있다. python 외에는 다룰 줄 아는 언어가 잘 없었고, 언매니지드 언어이자 컴파일 언어를 공부하고 싶어서 요즘 C를 공부하고 있다. 근데 아래 문제를 푸는데 왜 틀리는 이해를 못하고 있었다.

1069번 문제를 계속 틀리고 있었다. 처음 코드는

#include <stdio.h>

int main(void) {
    char a;
    scanf("%c", &a);
    
    if (a == "A") printf("best!!!");
    else if (a == "B") printf("good!!");
    else if (a == "C") printf("run!");
    else if (a == "D") printf("slowly~");
    else printf("what?");
    
}

이것과 같았다. 왜 틀린 것일까?
입력받은 값이 아스키 코드로 저장되기 때문일까 싶어서

#include <stdio.h>

int main(void) {
    char a;
    scanf("%c", &a);
    
    if (a == 65) printf("best!!!");
    else if (a == 66) printf("good!!");
    else if (a == 67) printf("run!");
    else if (a == 68) printf("slowly~");
    else printf("what?");
    
}

이렇게 바꿨더니 통과를 했다. 아니면 그러면 아스키 코드를 모르면 이런 비교문 만들기도 어렵다는 것인가? 납득이 안되어서 찾아보았더니..

큰따옴표와 작은따옴표의 차이가 있었기 때문이었다. 큰따옴표는 문자열, 작은따옴표는 문자를 저장하는데, 큰따옴표의 경우에는 맨뒤에 빈칸이 포함되기 때문에 입력받은 'A'와 "A"는 절대 같을 수가 없었던 것이었다.

python 쓸 때는 전혀 고민을 하지 않았던 부분인데 C에서는 이런 경우가 있어서 더 다루기 어렵다고 사람들이 말하나보다. 근데 난 이게 더 재밌다. 더 프로그래밍 하는 느낌이랄까? 변태기질이 있다 나는.

profile
Software Engineer

0개의 댓글