1. 程式人生 > >無符號整型 unsigned int、unsigned long、usigned long long、size_t 比較和格式控制

無符號整型 unsigned int、unsigned long、usigned long long、size_t 比較和格式控制

位數比較

由於資料的長度和平臺相關,所以基於 64 位系統比較。

Windows Linux
unsigned int 32 bits/4294967295 32 bits
unsigned long 32 bits 64 bits/18446744073709551615
unsigned long long 64 bits 64 bits
size_t 32 bits 64 bits

可以看到,size_t 和 unsigned long 比較同步。另外 ssize_t 和 size_t 的關係就像 int 和 unsigned int 的關係。(參考1參考2

格式控制(printf)

length d i u o x X f F e E g G a A c s p n
(none) int unsigned int double int char* void* int*
hh signed char unsigned char signed char*
h short int unsigned short int short int*
l long int unsigned long int wint_t wchar_t* long int*
ll long long int unsigned long long int long long int*
j intmax_t uintmax_t intmax_t*
z size_t size_t size_t*
t ptrdiff_t ptrdiff_t ptrdiff_t*
L long double

參考

測試程式碼

#include <cstdio>
int main()
{
    unsigned int ui = -1;
    unsigned long ul = -1;
    unsigned long long ull = -1;
    size_t st = -1;
    printf("ui=%u,ul=%lu,ull=%llu,st=%zu\n", ui, ul, ull, st);
    return 0;
}

測試結果

  • Windows

  • Linux