Study/C언어
C언어 - int로 선언한 변수에 입력한 값을 char로 출력 할 경우 오류가 나는 이유.
멘탈은안녕하신가
2018. 12. 17. 02:47
728x90
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <stdio.h>
int main()
{
int num; // int를 char로 고쳐주면 해결된다.
printf("입력 값 : ");
scanf("%c",&num);
printf("\n");
printf("아스키 코드 : %d\n",num);
return 0 ;
}
|
cs |
- 입력 : A
- 출력 : -0515387999
-
쓰레기 값이 출력되는 이유는?
-
num의 자료형이 int형 4바이트, 출력하는 값의 형식지정자는 %c(char)이다.
-
int형 변수 num을 지정할 때, 초기화를 해주지 않았기 때문에 num에는 쓰레기 값이 들어가 있다.
-
즉, 4바이트 메모리 공간에 쓰레기값이 꽉 차있는것이다.
-
이 때, num에 값을 입력한 공간은 1byte, 나머지 3byte는 그대로 쓰레기 값이 차있는 상태이기 때문에 num을 출력할 경우 그대로 쓰레기값이 출력된다.
-
-
해결 방법 : num의 자료형을 int에서 char로 바꿔주면 해결된다.
728x90
반응형