sprintf format 부분 질문
글쓴이: embster / 작성시간: 토, 2005/06/11 - 1:26오전
if (image.valid(pickx,picky)) { moremsg.sprintf("(%d,%d)=#%0*x ", pickx, picky, image.hasAlphaBuffer() ? 8 : 6, image.pixel(pickx,picky)); message += moremsg; }
위 소스 안에 sprintf format 부분에서 #%0*x 이런식의 포멧은 처음 봐서.. 어떤식으로 되는건지 잘 모르겠습니다..
image.hasAlphaBuffer() ? 8 : 6, 여기서 8이나 6이 어느부분에 대입되고 image.pixel(pickx,picky)); 의 리턴된 값이 어는곳에 대입이 되나요 아니면 두항목이 곱하기 연산을 해서 하는것인가요??
Forums:
%0*x에서 *는 그 specifier의 field width를 나타냅니
%0*x에서 *는 그 specifier의 field width를 나타냅니다. 보통 이 자리에는 숫자가 오는 게 보통이지만 field width가 상황에 따라서 변해야 할 경우 출력하고자 하는 값 바로 전에 인자를 넣어서 사용합니다. 곱하기랑은 별 상관이 없고 빈 자리를 나타낸다고 생각하시면 됩니다 ;)
이 경우 *에 (image.hasAlphaBuffer() ? 8 : 6)이 들어 가고 %0*x에 image.pixel(pickx,picky)가 들어 가겠습니다. 따라서 image.hasAlphaBuffer()가 참이면 %08x, 거짓이면 %06x로 동작하게 되겠지요. (하긴 코드를 보니 알파채널이 있냐 없냐에 따라서 출력하는 방법이 달라지겠네요)
- 토끼군
댓글 달기