그냥 얻을 수 없습니다. Char는 정수입니다. 맞습니까? 그래서scanf 및 정수로 char 유지
int var;
scanf("%d", &var);
I:[65]
printf("%c", var);
o:[A].
왜 할 wrog 다음입니다 수행 할 수 있습니다
char var;
scanf("%d", &var);
I:[A]
printf("%d", var)
O:[-1236778]
그냥 얻을 수 없습니다. Char는 정수입니다. 맞습니까? 그래서scanf 및 정수로 char 유지
int var;
scanf("%d", &var);
I:[65]
printf("%c", var);
o:[A].
왜 할 wrog 다음입니다 수행 할 수 있습니다
char var;
scanf("%d", &var);
I:[A]
printf("%d", var)
O:[-1236778]
을 두 번째 scanf()
scanf("%d", &var);
에서 scanf()
인쇄 지시 %d
을 구문 분석. 이는 &var
인수가 int
의 주소가 될 것으로 예상 함을 의미합니다. 대신 char
의 주소가 주어졌습니다. int
의 크기는 확실히 char
크기보다 큽니다. scanf()
은 int
크기를 'char'에 대해서만 의미하는 위치에 배치하려고 시도하므로 scanf()에서 이상한 일이 발생할 수 있습니다. 데이터를 배치해서는 안되는 장소입니다. 5 파운드 자루에 10 파운드 감자를 넣으려고하는 중입니다.
추가 - scanf("%d", &var);
이 입력 "A"를 성공적으로 읽었는지 의심 스럽습니다. scanf()
은 A
을 볼 수 있으며 숫자가 아니기 때문에 int
정의를 충족하는 텍스트 입력을 검색하지 않습니다. 따라서 scanf("%d", &var)
은 0
의 값을 반환 할 것이므로 을에 넣지 않았습니다. var
. 베이컨을 저장하면, 그렇게하면 안되는 공간에 데이터가 놓이게됩니다. 당신이이 문자에 우연히 어떤 를 얻을 수 있도록
마지막 printf("%d", var)
var
을 인쇄한다. -1236778
이 보이지 않습니다. 게시물이 코드 나 입력/출력과 일치하지 않는다고 생각합니다.
'% d '은'int *'를 기대하기 때문에'char *'가 아니기 때문에? –
하지만 문자는 정수로 유지됩니까? – zubergu
'char' **은 ** 정수형이지만 ** ** int는 int와 같지 않다. –