모종의 이유로 숫자를 int형이 아닌 char형으로 받아서 switch문을 다음과 같이 멋지게 완성했다. 혹은 int로 하더라도 결과는 같을 것이다.
/*
#include <conio.h>
*/
char choice;
choice = getch();
switch(choice) {
case 1: ...
case 2: ...
case 3: ...
default: ...
}
그리고 키보드로 1~3 사이의 값을 입력했다. 그러나 어떤 값을 입력하든 default로 넘어가는 것이다. 우리의 기대를 만족시켜줄 코드는 다음과 같이 짜야한다.
/*
#include <conio.h>
*/
char choice;
choice = getch() - '0';
switch(choice) {
case 1: ...
case 2: ...
case 3: ...
default: ...
}
차이를 알겠는가? getch()와 같은 함수는 결국 문자를 처리하는 함수이다. 숫자를 입력하면 그 숫자도 문자로 받아들인다. 먼저 작성했던 코드에서 1을 입력했다면 1과 '1'을 비교해놓고 참이 되기를 바랐던 것이다. 즉 '1'은 아스키코드로 실제 값은 49이다. 그래서 48을 빼 원래 숫자와 같게 만들어 줬다. 48은 코드의 의도를 읽기 편하도록 '0'로 작성하였다.
'C언어' 카테고리의 다른 글
C언어 기초 6. 주석 (0) | 2019.09.07 |
---|---|
C언어 기초 5. scanf() 함수 (0) | 2019.08.15 |
C언어 // 알아두면 쓸모 있는 지식 2. 문자열 비교하기 (0) | 2019.08.15 |
C언어 기초 4. 변수와 자료형 (0) | 2019.08.04 |
C언어 기초 3. printf() 함수 (2) | 2019.08.04 |