1、格式化 unsigned long long int
C 中,unsigned long long int
是一个 无符号的 64 位整数(在大多数现代系统上)。要使用 printf
正确地输出它。
需要使用格式说明符%llu
, ll
表示 long long
类型(可能是 64 位),u
表示 unsigned
(无符号)。
#include <stdio.h> int main() { unsigned long long int value = 123456789012345ULL; printf("The value is: %llu\n", value); return 0; }
注意:避免使用%lu
或 %u
这些格式说明符是用于 unsigned long
或 unsigned int
类型的。如果你用它们来打印 unsigned long long
,在某些平台上会导致错误输出或未定义行为。
2、跨平台兼容性
为了更好地跨平台支持,可以使用 C99 中引入的 <inttypes.h>
,配合 PRIu64
宏来格式化 uint64_t
类型变量。
#include <stdio.h> #include <inttypes.h> int main() { uint64_t value = 123456789012345ULL; printf("The value is: %" PRIu64 "\n", value); return 0; }
3、使用场景举例
1)处理大整数
#include <stdio.h> int main() { unsigned long long totalBytes = 9223372036854775808ULL; printf("Total bytes: %llu\n", totalBytes); return 0; }
2)计算组合/排列等数学值
#include <stdio.h> int main() { unsigned long long factorial = 1; for (int i = 1; i <= 20; i++) { factorial *= i; } printf("20! = %llu\n", factorial); return 0; }
3)唯一 ID 编号(如 Twitter Snowflake ID)
#include <stdio.h> int main() { unsigned long long id = 16345729384729384729ULL; printf("User ID: %llu\n", id); return 0; }
4)文件大小或系统级统计
#include <stdio.h> int main() { // 1TB unsigned long long fileSize = 1099511627776ULL; printf("文件大小:%llu 字节\n", fileSize); return 0; }