【发布时间】:2011-02-12 19:59:44
【问题描述】:
typedef unsigned long long IMSI;
IMSI imsi;
当我尝试使用 %llu 作为格式说明符来打印它时,我得到了一个相当不相关的值。
我可以做些什么来消除这个问题?
我也在使用 gcc 4.3.3 虽然我一直在使用的跟踪机制可能存在问题,但即使使用 printf 我也会遇到同样的问题。
imsiAsInt = 9379666465 ;
brrm_trace(ubm_TRACE_BRRM_UECTRL,ubm_TRACE_INFO,
UEC_IUH_ACCACHE_ENTRY_FOUND,imsiAsInt, status.ueRegCause,
mCacheEntries.size());
printf("printf:UEC_IUH_ACCACHE_ENTRY_FOUND=%llu, sizeof(IMSI)=%d\n",
imsiAsInt,sizeof(IMSI));
这给出了以下输出 UEC_IUH_ACCACHE_ENTRY_FOUND Imsi=789731873,UeRegCause=1,CurSize=5 -->跟踪 printf:UEC_IUH_ACCACHE_ENTRY_FOUND=789731873, sizeof(IMSI)=8 ---> 使用 printf 时
此外,对于 7 位数的较小值,我没有遇到任何问题。
【问题讨论】:
-
你用非负数初始化了吗?
-
你能在一个最小的程序上复制这个并粘贴吗?