*out = "0123456789abcdef"[abs(quotient % base)]; 이게 무슨뜻인가요

taijiun의 이미지


유닉스에서는 itoa가 표준이 아니어서 소스를 구했는데


*out = "0123456789abcdef"[abs(quotient % base)];

이런 부분이 있더라구요

이게 무슨뜻인가요 ;;; 이런 문법은 처음 봐서 ..

절대값 구한 뒤에 뭐 어쩌라는 건가요 ?? ;

익명 사용자의 이미지

문자열 상수는 char형 배열입니다.
따라서

char TMP = "0123456789abcdef";
...
*out = TMP[abs(quotient % base)];

위와 같다고 생각하시면 됩니다.

그리고 오버헤드가 몹시 거슬리는 상황이 아니면
sprintf나 snprintf 쓰시면 됩니다.

taijiun의 이미지

감사합니다 ^^

HDNua의 이미지

멋진 방법이네요. 덩달아 알아갑니다.

저는 이렇게 생각했습니다.

익명 사용자의 이미지

"0123456789abcdef"[abs(quotient % base)]는 *("0123456789abcdef" + abs(quotient % base))과 같습니다