首页 > 解决方案 > 如何在С中读取或写入64位数字?

问题描述

我可以用 %lld 在 C 中输入 64 位数字吗?

如果没有怎么办?请在回答时举例说明。

谢谢

标签: cinput64-bitlong-long

解决方案


如果您的编译器和标准库支持,您可以读取long longwith%lld说明符的整数scanf(),但不保证是 64 位的。(long long至少可以存储-9223372036854775807( -(2**63 - 1)) 和+9223372036854775807( 2**63 - 1) 之间的数字(包括两者),所以它至少应该是 64 位)

如果您的环境支持,您可以使用int64_t类型和"%" SCNd64格式说明符。是一个正好是 64 位的有符号整数类型。您可以对无符号 64 位整数使用类型和格式说明符。inttypes.hint64_tuint64_t"%" SCNu64

例子:

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

推荐阅读