簡體   English   中英

格式'%lld'期望類型'long long int',但參數4的類型為'int64_t'

[英]format '%lld' expects type 'long long int', but argument 4 has type 'int64_t'

我嘗試使用%lld格式說明符打印int64_t類型的變量,但得到以下警告?

警告:格式'%lld'需要類型'long long int',但參數4的類型為'int64_t'

在我看來,在linux下, int64_t總是long long int ,然后:

  1. 為什么會出現此警告?
  2. 我怎樣才能解決這個問題?

怎么修?

使用PRId64 :(不要忘記包含<inttypes.h>

printf("var64 = %" PRId64 "\n", var64);

如果要將其打印為十六進制,請使用PRIx64和正確的PRIx64

int64_t總是long long int ,那為什么會出現這個警告呢?

從C99開始( 鏈接到草稿 ,第22頁),C規范建議long long int類型應至少為 64位,但也可能更多。

- long long int類型的對象的最小值
LLONG_MIN -9223372036854775807 // - (2 63 -1)
- long long int類型的對象的最大值
LLONG_MAX +9223372036854775807 // 2 63 - 1

在某些平台上, long long int可能是128位,print語句在這些平台上調用UB

因此,將此警告視為可移植性問題警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 警告:格式&#39;%llx&#39;期望的參數類型為&#39;long long unsigned int *&#39;,但是參數3的類型為&#39;off64_t *&#39;[-Wformat] 格式&#39;%ld&#39;期望類型為&#39;long int&#39;,但是參數3的類型為“ TEST” 警告:格式&#39;%lu&#39;期望參數類型為&#39;long unsigned int&#39;,但是參數4的類型類型為&#39;long unsigned int *&#39;[-Wformat] 警告:格式&#39;%ld&#39;期望類型為&#39;long int&#39;的參數,但是參數2的類型為&#39;int&#39; 警告:格式&#39;%d&#39;需要類型為&#39;int&#39;的參數,但參數2的類型為&#39;long int&#39;[-Wformat =] Re Legacy代碼:格式&#39;%d&#39;需要類型為&#39;int&#39;的參數,但參數3的類型為&#39;long unsigned int&#39;[-Wformat] 警告:格式&#39;%ld&#39;期望類型為&#39;long int&#39;的參數,但參數類型為&#39;__builtin_neon_di&#39; 格式 %lu 需要類型為“long unsigned int”的參數,但參數 3 的類型為 long long unsigned int,從打印機轉換為不同大小的整數 警告:字段寬度說明符 &#39;*&#39; 需要類型為 &#39;int&#39; 的參數,但參數 2 的類型為 &#39;size_t&#39; {aka &#39;long unsigned int&#39;} 打印size_t:格式&#39;%lu&#39;期望類型為&#39;long unsigned int&#39;的參數
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM