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 6년 전
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'의 이유를! 알고싶습니다!