CString::Format %d %u / DWORD  UINT




CString의 Format() 이라는 멤버 함수가 있다.
CString 객체의 문자열 값을 sprintf 를 이용하듯이 C-style 서식 지정을 이용하여 문자열 값을 설정한다.


의심의 여지 없이 아래와 같이 코드를 짰다.
CString  sCount = _T("");
DWORD  dwItem = MAXDWORD;

sCount.Format(_T("아이템 개수 : %d"),  dwItem);


sCount값을 출력 시켰는데  "아이템 개수 : -1" 이라고 찍히더라.
printf()를 사용해본지 하도 오래되어서 무심코 %d를 사용했는데
서식지정자 역시 변환하는 데이터 형에 맞게 넣어 주어야 한다.

%d : signed interger (4Byte  +,- 21억) 10진수 출력
%u : unsigned integer (4Byte  +42억) 10진수 출력





UINT 와 DWORD 의 차이는 뭘까??
MSDN을 봐도 둘다 unsigned의 4바이트 값의 범위를 갖는다.
과연??



UINT
 - Windows Version 3.0 과 3.1 에서는 16bit unsigned integer 로 해석된다.
 - Win32 Version 에서는 32bit unsigned integer 로 해석 된다.

즉, Win32 윈도우 프로그래밍에 있어서 UINT와 DWORD는 동일한 값을 표현 한다고 볼 수 있다.

예전엔 int는 2byte 여서 +,- 3만2천,  long 은 4byte 여서 +,- 21억  의 값의 범위를 갖는다고 배웠었는데..
추억이 되었구나  ^^

Posted by six605
,