問題描述
在 C/C++ 開發中,使用 printf 列印 64 位變數比較常用,通常在 32 位系統中使用 %lld 輸出 64 位的變數,而在 64 位系統中則使用 %ld;
如果在 32 位系統中使用 %ld 輸出 64 位變數,很可能列印的值是例外的,而在 64 位系統中則使用 %lld,則通常會出現編譯報錯,類似如:
format '%lld' expects type 'long long int', but argument 4 has type 'int64_t'[ -Werror=format=]
如果在跨平臺移植代碼時,通常就會遇到這種情況,
解決方案
為了解決跨平臺移植的問題,% PRId64 的書寫方式解決了跨平臺的問題,主要是為了同時支持32位和64位作業系統,PRId64表示64位整數,在32位系統中表示long long int,在64位系統中表示long int,
寫法格式:
uint64_t value = https://www.cnblogs.com/const-zpc/archive/2022/07/05/1560;
printf("value = https://www.cnblogs.com/const-zpc/archive/2022/07/05/%" PRId64 "\n", value);
效果如下:
uint64_t value = https://www.cnblogs.com/const-zpc/archive/2022/07/05/1560;
printf("value = https://www.cnblogs.com/const-zpc/archive/2022/07/05/%" "%ld" "\n", value); // 64bit OS
printf("value = https://www.cnblogs.com/const-zpc/archive/2022/07/05/%" "%lld" "\n", value); // 32bit OS
或者
uint64_t value = https://www.cnblogs.com/const-zpc/archive/2022/07/05/1560;
printf("value = https://www.cnblogs.com/const-zpc/archive/2022/07/05/%ld/n", value); // 64bit OS
printf("value = https://www.cnblogs.com/const-zpc/archive/2022/07/05/%lld/n", value); // 32bit OS
本文來自博客園,作者:大橙子瘋,轉載請注明原文鏈接:https://www.cnblogs.com/const-zpc/p/16364422.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/498506.html
標籤:其他
上一篇:Django【執行查詢】(一)
