#include <stdio.h>
int main(void)
{
char num1;
printf("정수를 입력: ");
scanf("%d", &num1);
printf("아스키 문자: %c ", num1);
return 0;
}
=========================
#include <stdio.h>
int main(void)
{
int num1;
printf("정수를 입력: ");
scanf("%d", &num1);
printf("아스키 문자: %c ", num1);
return 0;
}
============================
위에서 처럼 자료형을 int로 넣었을 때는 문제가 없는데, char로 넣으니까 아래처럼 애러창이 뜸. 이유가 뭔지 모르겠어 ㅠ
65만 입력한것같죠?
엔터도 입력되서 2바이트가 들어가요, char형은 1바이트밖에 못담아서 오버플로우가 일어나요
65만 입력함, char도 정수형 이잖앙 그러니까 출력까진 원할이 된 것 같은데. 저 애러창이 왜 뜨는 지 의문;;
엔터가 왜 입력이 되나요?..;; 원래 scanf에서 자료입력하고 엔터치면 엔터가 같이 입력되나영??
scanf 입력받을 때 엔터라는 값으로 버퍼라고 한칸 더 들어감
그럼 65가 6과 5 두 글자로 되서 2바이트임?
아~ 감사합니다.
char는 -128~127인가까지 담을수있어요 그사이 숫자는 1바이트
char = [65][엔터] = 예정에 없었던 다른 메모리를 쓰게 됨 = 에러 ㅇㅋ?
A가 출력됫다는건 일단 65까지는 메모리 안에 들어갔으나 65를 입력하고 엔터를 하는 순간 char = [1칸] = 1바이트 = 2비트
위의 분 말도 맞지만 위의 코드의 경우에는\n(엔터 아스키명령어) 은 무시되지 않나요? 윗분께서 말씀하시는 내용은 케릭터 와일문 돌릴때 입력이 하나더되는 현상을 설명하는 내용이고 위의 경우에는 스캔에프에 입력으로 저장되는 값의 문제인거같습니다
넘1 은 케릭터형인데 스캔에프에서 받는 입력 값은 인테져 형이져 그럼으로 오류가 뜨는거같습니다
리눅스 컴파일 확인 해본결과 자료형 문제라고 뜨네요 ㅎㅎ
char는 문자형이자 정수형이라고 알고 있는데, char을 scanf에서 입력받을 때는 문자형으로만 넣어야 하는 건가? Melf짱 말이 맞는 것 같음, 반대로 char에 문자를 입력하고 정수를 출력받으니 정상적으로 실행 되었슴. 고로 char에 scanf입력시 문자가 아닌 정수를 입력한 것이 문제! 그러나 char은 정수형도 맞기 때문에 char에 바로 정수를 대입 후 printf할 때는 문제가 없음.. 복잡복잡