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;
}