c 스타일의 printf에서 'long long' 은 어떤 포맷을 사용할까?
long : l
long long : ll
unsigned long long : llu
Visual Studio 2013을 사용해서 작업중인데, 변수위에 마우스를 가져다 놓으니 인텔리전스 기능에 의해 "long long"이라는 표시가 나옵니다.
그래서
CString strDebug;
strDebug.Format(_T("Value = %ll"), myData);
OutputDebugString(strDebug);
이런 형태로 했습니다. 그런데 값이 정상적으로 찍히지 않고, 빈칸으로 나옵니다.
왜 이러지?
값이 없나?
디버그를 해보니 값이 있습니다. 그러면 왜 안찍히는 걸까?
Header파일로 이동해서 보니
__int64 myData;
Visual Stuidio 2013에서 마우스 툴팁에서는 "long long" 으로 표시가 되었는데, 헤더파일에는 "__int64" 입니다.
그래서 정상적으로 표시를 하려면 "unsigned long long" 처럼 "%llu"를 사용해야 합니다.
strDebug.Format(_T("Value = %llu"), myData);
이렇게하니 드디어 정상적으로 표시가 됩니다.
참고로,
unsigned __int64 는
0 ~ 18446744073709551615
signed __int64 은
-9223372036854775808 ~ 9223372036854775807
다른 방법으로 %I64d 혹은 %I64u 를 이용할수도 있습니다.
signed __int64 myData;
strDebug.Format(_T("Value = %I64d"), myData);
unsigned __int64 myData;
strDebug.Format(_T("Value = %I64u"), myData);
'정보 > 기술' 카테고리의 다른 글
batch 만들기 : 파일복사 (0) | 2022.10.05 |
---|---|
Shell Path Handling Functions (0) | 2022.09.18 |
유튜브 광고 자동건너뛰기 Skip Ads (0) | 2021.06.04 |
엑셀로 스케쥴 관리하기 (0) | 2021.06.03 |
(플립북 사용팁 및 사용후기) 한영전환 (0) | 2021.04.18 |