책 내용 질문하기
p.330
도서
2025 시나공 퀵이지 정보처리기사 실기 단기완성
페이지
330
조회수
86
작성일
2024-10-08
작성자
유*찬
첨부파일

p.330 에서 it is 8 문제에서 왜 다른 문자는 아스키 코드로 작성하고

숫자는 아스키 코드로 인식하지 않은건가요 ?

숫자는 48~57 까지의 아스키 코드 번호를 가지고 있으며 8은 55의 숫자를 가지고있으므로

58%10 = 8 + 0 = ? 이렇게 돼서 한참을 고민했는데

답은 보니 숫자 8이였으니 +3을하고 10을 나눈 나머지값에 0을 더한 '1' 이렇게 단순하게 나오더라구요

숫자를 아스키 코드로 인식하지 않은 이유는 무엇인가요 ?

답변
2024-10-08 21:36:53

안녕하세요 길벗수험서 운영팀입니다.

문자열들을 아스키 코드값으로 저장이 되는데

숫자값이 들어있을때는 입력된 숫자값으로 계산을 하고

문자가 들어있을때는 아스키 코드값으로 계산이 됩니다

char *p = "It is 8" 이 코드는 문자열 포인터 변수 p를 선언하면서

문자열 "It is 8"이 저장된 곳의 주소를 저장합니다.

이때 문자열들이 메모리에 저장될때는 문자가 그대로 저장되는것이 아니라 해당 문자의 아스키 코드값으로 저장이 됩니다.

8의 경우 회원님께서 말씀하신것처럼 58 이니 아스키 코드값 58로 저장이 됩니다

else if (isdigit(p[i]) 이식에서 P[i] 값이 숫자인지를 확인하는데 아스키 코드값 58은 숫자 8이기 때문에 참이되어

바로 밑에 있는 result[i] = (p[i] - '0'+ 3) % 10 + '0'; 이식을 만납니다.

숫자라고 판별이 되었을때 아스키코드 58은 숫자 8이기 때문에 8+3%10+0 이렇게 계산이 되는것입니다.

행복한 하루되세요 :)


  • 관리자
    2024-10-08 21:36:53

    안녕하세요 길벗수험서 운영팀입니다.

    문자열들을 아스키 코드값으로 저장이 되는데

    숫자값이 들어있을때는 입력된 숫자값으로 계산을 하고

    문자가 들어있을때는 아스키 코드값으로 계산이 됩니다

    char *p = "It is 8" 이 코드는 문자열 포인터 변수 p를 선언하면서

    문자열 "It is 8"이 저장된 곳의 주소를 저장합니다.

    이때 문자열들이 메모리에 저장될때는 문자가 그대로 저장되는것이 아니라 해당 문자의 아스키 코드값으로 저장이 됩니다.

    8의 경우 회원님께서 말씀하신것처럼 58 이니 아스키 코드값 58로 저장이 됩니다

    else if (isdigit(p[i]) 이식에서 P[i] 값이 숫자인지를 확인하는데 아스키 코드값 58은 숫자 8이기 때문에 참이되어

    바로 밑에 있는 result[i] = (p[i] - '0'+ 3) % 10 + '0'; 이식을 만납니다.

    숫자라고 판별이 되었을때 아스키코드 58은 숫자 8이기 때문에 8+3%10+0 이렇게 계산이 되는것입니다.

    행복한 하루되세요 :)


· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.