안녕하세요 길벗수험서 운영팀입니다.
문자열들을 아스키 코드값으로 저장이 되는데
숫자값이 들어있을때는 입력된 숫자값으로 계산을 하고
문자가 들어있을때는 아스키 코드값으로 계산이 됩니다
char *p = "It is 8" 이 코드는 문자열 포인터 변수 p를 선언하면서
문자열 "It is 8"이 저장된 곳의 주소를 저장합니다.
이때 문자열들이 메모리에 저장될때는 문자가 그대로 저장되는것이 아니라 해당 문자의 아스키 코드값으로 저장이 됩니다.
8의 경우 회원님께서 말씀하신것처럼 58 이니 아스키 코드값 55로 저장이 됩니다
else if (isdigit(p[i]) 이식에서 P[i] 값이 숫자인지를 확인하는데 아스키 코드값 58은 숫자 8이기 때문에 참이되어
바로 밑에 있는 result[i] = (p[i] - '0'+ 3) % 10 + '0'; 이식을 만납니다.
숫자라고 판별이 되었을때 아스키코드 55는 숫자 8이기 때문에 8+3%10+0 이렇게 계산이 되는것입니다.
행복한 하루되세요 :)
라는 답변을 받았는데요
제가 선생님의 말씀을 이해하기로는 숫자임을 확인한 후에 8로 생각해서 계싼을한다 라고 말씀하셨는데, 그렇게되면 문자도 문자인것을 확인하고 i -a 가 되어야지 왜 아스키 코드값으로 계산이 된건가요 ? 문자인것을 확인하고 문자를 아스키 코드값으로 변환하여 계산했다면, 숫자도 숫자임을 확인하고 아스키 코드값인 55로 바꾸어 계산해야하는거 아닌가 싶어서요 ..!
안녕하세요 길벗수험서 운영팀입니다.
만약 말도 안되지만 ㄱ + 100 을 계산해 보세요
계산이 안되죠~
때문에 아스키 코드값으로 계산을 하는것입니다.
숫자일 경우 계산을 할 수 있기 때문에 해당 숫자값으로 계산을 합니다
행복한 하루되세요 :)
-
관리자2024-10-09 14:33:16
안녕하세요 길벗수험서 운영팀입니다.
만약 말도 안되지만 ㄱ + 100 을 계산해 보세요
계산이 안되죠~
때문에 아스키 코드값으로 계산을 하는것입니다.
숫자일 경우 계산을 할 수 있기 때문에 해당 숫자값으로 계산을 합니다
행복한 하루되세요 :)