【发布时间】:2021-07-24 05:59:19
【问题描述】:
我可以用 %lld 在 C 中输入 64 位数字吗?
如果没有怎么办? 回答时请举例。
谢谢
【问题讨论】:
-
你试过用
%lld吗?你这样做的时候发生了什么?你遇到了什么问题? -
问题中说不要使用%lld。这就是我问的原因。
我可以用 %lld 在 C 中输入 64 位数字吗?
如果没有怎么办? 回答时请举例。
谢谢
【问题讨论】:
%lld吗?你这样做的时候发生了什么?你遇到了什么问题?
如果您的编译器和标准库支持,您可以通过scanf() 使用%lld 说明符读取long long 的整数,但不能保证它是64 位的。 (long long 至少可以存储-9223372036854775807 (-(2**63 - 1)) 和+9223372036854775807 (2**63 - 1) 之间的数字(两者都包括),所以至少应该是64位)
如果您的环境支持,您可以使用来自inttypes.h 的int64_t 类型和"%" SCNd64 格式说明符。 int64_t 是一个正好是 64 位的有符号整数类型。
您可以将uint64_t 类型和"%" SCNu64 格式说明符用于无符号64 位整数。
例子:
#include <stdio.h>
#include <inttypes.h>
int main(void) {
int64_t num;
if (scanf("%" SCNd64, &num) != 1) { /* read 64-bit number */
puts("read error");
return 1;
}
printf("%" PRId64 "\n", num); /* print the number read */
return 0;
}
【讨论】: