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