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
반응형
'Study > C언어' 카테고리의 다른 글
C언어 - 포인터 Call-By-Value와 Call-By-Reference의 구분, 더블포인터의 이해 (0) | 2018.12.17 |
---|---|
C언어 - sacnf의 &(주소연산자) (0) | 2018.12.17 |
C언어 - 배열과 스택, 버퍼 오버플로우 (0) | 2018.12.17 |
C언어 - scanf_s의 사용법과 예제 (0) | 2018.12.13 |
C언어 - 정수형의 크기 (0) | 2018.12.10 |
댓글