1권 164페이지 48번 질문있습니다.
48번에서 궁금한점은 코드를 보면 push함수의 매개변수인 i는 int형으로 선언되어있는데 main함수안에 push함추호출 인자를 보면 'A' 처럼 문자형인데, 즉 자료형이 다른데 어떻게 호출이 가능한지 궁금합니다
안녕하세요 길벗수험서 운영팀입니다.
문자 한 글자를 의미하는 char 자료형은 'a' 또는 'A' 이런식으로 저장한다고 표현하지만,
실제로는 해당 문자가 저장되는 것이 아닌 해당 문자의 아스키 코드가 저장됩니다.
때문에 char a = 'A'를 선언한뒤
printf("%d", a) 이렇게 출력하면 문자 'A'의 아스키 코드 값인 65가 출력됩니다.
( printf("%d", 'A') 도 동일합니다.)
해당 문제는 이렇게 한 글자의 문자를 처리할 때는 실제 문자가 아닌 숫자가 전달된다는 것을 기반으로 인수로 'A'를 전달하고 받을 때는 'A'의 아스키 코드인 65가 변수 i에 저장되도록 만듭니다. 출력시에만 %d가 아닌 %c로 출력하여 65가 아닌 'A'가 출력되도록 만든 것이죠.
int a= 65;
char b='A';
printf("%c", a); - 'A' 출력
printf("%d", a); - 65 출력
printf("%c", b); - 'A' 출력(위와 동일)
printf("%d", b); - 65 출력(위와 동일)
행복한 하루되세요 :)
-
관리자2020-04-21 19:26:14
안녕하세요 길벗수험서 운영팀입니다.
문자 한 글자를 의미하는 char 자료형은 'a' 또는 'A' 이런식으로 저장한다고 표현하지만,
실제로는 해당 문자가 저장되는 것이 아닌 해당 문자의 아스키 코드가 저장됩니다.
때문에 char a = 'A'를 선언한뒤
printf("%d", a) 이렇게 출력하면 문자 'A'의 아스키 코드 값인 65가 출력됩니다.
( printf("%d", 'A') 도 동일합니다.)
해당 문제는 이렇게 한 글자의 문자를 처리할 때는 실제 문자가 아닌 숫자가 전달된다는 것을 기반으로 인수로 'A'를 전달하고 받을 때는 'A'의 아스키 코드인 65가 변수 i에 저장되도록 만듭니다. 출력시에만 %d가 아닌 %c로 출력하여 65가 아닌 'A'가 출력되도록 만든 것이죠.
int a= 65;
char b='A';
printf("%c", a); - 'A' 출력
printf("%d", a); - 65 출력
printf("%c", b); - 'A' 출력(위와 동일)
printf("%d", b); - 65 출력(위와 동일)
행복한 하루되세요 :)