본문 바로가기
Study/C언어

C언어 - int로 선언한 변수에 입력한 값을 char로 출력 할 경우 오류가 나는 이유.

by 멘탈은안녕하신가 2018. 12. 17.
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
반응형

댓글