dayun1010   3년 전

int change(int num,int index,int digit){
if(index==0&&digit==0)return -1;
string s = to_string(num);
s[index] = digit+'0';
return stoi(s);

}

num이라는 숫자를 받아서 index의 위치에 잇는 숫자를 digit로 바꾸는 함수인데요.

예를들면 change(1911,2,3);

이면 1911->1931 로 변하는 함수입니다.

근데 여기서 s[index]=digit+'0'을 왜 하는 걸까요?

+'0'의 이유를! 알고싶습니다!


chogahui05   3년 전

http://www.cplusplus.com/refer...

일단 이 문서를 잘 읽어보시고요. java 같은 경우 String 클래스 내부에 char형 배열이 있습니다..

이 친구는 내부적으로 무엇이 있는지는 잘 모르겠지만.

char형으로 관리하는 것은 같을 거라 생각이 듭니다.


'0'이 아스키 코드로 48입니다. 아마도?

'9'는 57이죠.

당장 printf("%d",'0'); 이래 하면 48이 나올 걸요? 0이 아니라?


9와 '9'가 다르고요. '0'과 0은 달라요.

하튼..


문자 '0'은 아스키 코드로 48이고, '9'는 57입니다.

57에서 9를 빼면 48이네요.


그렇기 때문에

사실상 s[index]=digit+48을 해야 맞는 거죠.


그런데 48은 '0'과 같네요?

고로, s[index] = digit + '0'을 하는 거죠. 아스키 코드 찾아보세요.

아스키 코드와 정수형 변수를 약간 헷갈리시는 거 같아요.

dayun1010   3년 전

오 이해됬어요! 감사합니다!!

댓글을 작성하려면 로그인해야 합니다.