#include <stdio.h>
int main() {
    unsigned long long int num = 285212672; //FYI: fits in 29 bits
    int normalInt = 5;
    printf("My number is %d bytes wide and its value is %ul. A normal number is %d.\n", sizeof(num), num, normalInt);
    return 0;
}

输出:

My number is 8 bytes wide and its value is 285212672l. A normal number is 0.

我假设这个意外的结果来自于输出unsigned long long int。你如何打印()一个unsigned long long int?


当前回答

Hex:

printf("64bit: %llp", 0xffffffffffffffff);

输出:

64bit: FFFFFFFFFFFFFFFF

其他回答

Hex:

printf("64bit: %llp", 0xffffffffffffffff);

输出:

64bit: FFFFFFFFFFFFFFFF

在Linux中是%llu,在Windows中是%I64u

虽然我发现它不能在Windows 2000中工作,但似乎有一个bug !

使用ll (el-el) long-long修饰符和u (unsigned)转换。(适用于windows, GNU)。

printf("%llu", 285212672);

对于使用MSVS的long long(或__int64),您应该使用%I64d:

__int64 a;
time_t b;
...
fprintf(outFile,"%I64d,%I64d\n",a,b);    //I is capital i

%d——>为int

%u——>为unsigned int

%ld—>为长int或长

%lu——>用于unsigned long int或long unsigned int或unsigned long

%lld—>表示long long int或long long

%llu——>用于unsigned long long int或unsigned long long