【发布时间】:2015-06-20 11:12:03
【问题描述】:
c 中最大的数据类型是什么,我可以在其中存储 10^17 等较大的值?并告诉在这种特殊情况下如何接受用户输入、存储、打印它们。
【问题讨论】:
-
使用
unsigned long long int。它最多可以存储2^64 - 1。
标签: c
c 中最大的数据类型是什么,我可以在其中存储 10^17 等较大的值?并告诉在这种特殊情况下如何接受用户输入、存储、打印它们。
【问题讨论】:
unsigned long long int。它最多可以存储2^64 - 1。
标签: c
一个特定的实现可以选择支持实现定义的扩展整数类型(N1570 6.2.5类型):
4) 也可能存在实现定义的扩展有符号整数 types.38) 标准和扩展的有符号整数类型 统称为有符号整数类型。39)
6) 对应于扩展有符号的无符号整数类型 整数类型是扩展的无符号整数类型。标准 和扩展的无符号整数类型统称为无符号 整数类型.40)
动机很可能允许使用 128 位宽的整数,但似乎对此不感兴趣。特定实现更有可能通过 gcc 中的 __int128 等扩展支持此类整数。
但是,如果您的要求高达 1017,那么您可以使用标准的无符号整数类型,例如 unsigned long long int。它保证至少为 64 位宽,因此可能的范围至少为 [0, 264-1],即略大于 18 * 1018。
请注意,long long 类型是在 C99 中引入的,但很可能甚至更旧的 C89 编译器都通过扩展支持它们。检查编译器的文档以获取任何详细信息。
printf() 和 scanf() 在格式说明符中都需要前缀 ll。例如:
unsigned long long n = ULLONG_MAX;
printf("lld", n);