뉴비임미다.
사용자로부터 문자를 입력받으면 그에 따른 숫자를 출력하는 프로그램이에여.
#include<stdio.h>
int main(void)
{
int a;
printf(\"문자를 입력하세요 : \");
scanf(\"%c\", &a);
printf(\"%d \\n\", a);
return 0;
}
이건 제가 처음 작성했던 소스인데요.
이상한 값이 출력되네요. 변수 a를 char형으로 선언하면 잘되는데 int형으로 선언하면
왜 이상한 값이 출력되나요?
ASCII로 하는 것은 암니담.
사용자로부터 문자를 입력받으면 그에 따른 숫자를 출력하는 프로그램이에여.
#include<stdio.h>
int main(void)
{
int a;
printf(\"문자를 입력하세요 : \");
scanf(\"%c\", &a);
printf(\"%d \\n\", a);
return 0;
}
이건 제가 처음 작성했던 소스인데요.
이상한 값이 출력되네요. 변수 a를 char형으로 선언하면 잘되는데 int형으로 선언하면
왜 이상한 값이 출력되나요?
ASCII로 하는 것은 암니담.
자료형을 니맛대로 그렇게 막 바꾸면 아니됩니다. int 형으로 선언해놓고 char받으면 안됩니다.
``
어떤 대답을 원하빈까
이상한 값이 나오는것은 이상한 헛짓거리를해서 그렇습니다
니가 아직 C책을 덜 봐서 그래 마저 다보면 왜 그런지 알 수 있을꺼야.
일단 열강C책다보고 구글링,네이버검색 까지 다해보고 교수한테 찾아가서도 그문제가 이해되거나 해결되지않는다면 전과를 추천합니다.
그러니까 int형으로 선언하고 문자로 받으면 안된다는거죠??
에초에 int형으로 선언해서 키보드값을 왜 문자로받냐? 뭐 실험이면 상관없지만 ...
열강C에서 문자는 char로 받으라길래 int형으로 하면 어찌될까 하다가 여기까지 와밨습니다. 답변 감사합니다
ㅇㅇ 그런실험정신은 좋은거임
아 하나 더 궁금한게 있는데여. %c 요 서식문자로 값을 입력시킬때는 char형에서 밖에 못하는건가여>?
int형도 정수형이고 char형도 정수형인데 말임미다.
못하진안음(컴파일러에서 중단은안시킴)다만 그짓을 꼭 할필요가잇을까싶음... char는 문자형입니당...
int가 정수형입니다.. 자료형에대해서 촙내헷갈리는거같은데 책다보고 질문하세연
int형으로 입력을 못하진 않는데 왜 위 소스코드로 프로그램을 짜면 이상한 값이 출력되져? 책을 몇번이나 눈으로 보아봐도 답이 나오질 않는군여..귀찮게 해드려서 죄송함미다.
난 이해가 안되는게 왜 정수로 선언해놓고 그안에 문자열로 처넣냐..그거지..
아 이제 알겠슴미다. 그니까 문자는 char이거네여. 감사함미다
가변인자는 포인터가 어떤 형태가 될지 알수 없기 때문에 범용 포인터로써 받고 %c %d 와 같은 인자에 따라서 그 포인터에 대한 자료형 크기 만큼 입력한 자료를 변환 시켜 리턴 해주기 때문에 c 로 받으면 당연히 4바이트에 제대로 값이 들어가지 않으니까 에러가 뜨는거지
리턴 -> 입력, 에러 -> 잘못된 값
int 는 4바이트 입니다. %c로 입력받으면 1바이트만 입력을 받는데요 int형 변수에 1바이트만 초기화 되고 3바이트는 초기화 되지 않은 상태에서 %d로 4바이트를 모두 출력하니까 초기화 되지 않은 3바이트까지 같이 출력되서 이상한 값이 나오는 것입니다.
int a;라고 선언시 a가초기화 안되어 있으면 쓰레기 값이 들어가는건 아시죠? int a=0;이라고 초기화 한뒤 다시 해보세요 같은 값이 나올 거에요
모두 감사드립니다. 이제 이해 갔어요 ㅋㅋ