天天看點

列印unsigned long long int

如果你想使用inttypes.h中的

int32_t

int64_t

,

uint64_t

等資料類型,如何對其進行printf是需要仔細考慮的。

在32位平台和64位平台對uint64_t的定義是不同的:

32位平台: typedef unsigned long long int  uint64_t; 64位平台: typedef unsigned long int   uint64_t;

是以,在這兩種平台裡printf 一個 uint64_t的變量時就會遇到問題,是選擇%llu 還是 %lu就成為了一個問題。 這時候,我們就需要使用inttypes.h中定義的配套宏進行正确的printf。

#define __STDC_FORMAT_MACROS    //如果是C++,還需要包括這個宏
#include <inttypes.h>   // now PRIu64 will work
#include <stdio.h>


int main()
{
    uint64_t x;
    uint32_t y;


    printf("x: %"PRId64", y: %"PRId32"\n", x, y);
    
    return 0;
}