十六进制格式的无符号长整型打印

Pau*_*ate 43 c printf integer

我想打印出unsigned long long这样的:

  printf("Hex add is: 0x%ux ", hexAdd);
Run Code Online (Sandbox Code Playgroud)

但我得到了类型转换错误,因为我有一个unsigned long long.

gav*_*inb 68

您可以使用相同的ll大小修饰符%x,因此:

#include <stdio.h>

int main() {
    unsigned long long x = 123456789012345ULL;
    printf("%llx\n", x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

完整的转换和格式化说明符在这里有一个很好的表:


Iły*_*sov 5

尝试%llu- 这将是十进制形式的 long long unsigned

%llx 以十六进制打印 long long unsigned

  • 但是 `printf("%llu\n", (long long unsigned int) 243);` 打印了 `243`,它是十进制的,而不是十六进制的;`printf("%llx\n", (long long unsigned int) 243);` 以十六进制打印 `f3`。 (3认同)