c中最大的数据类型是什么,我可以存储10 ^ 17等大值?并且还告诉如何在这种特殊情况下接受用户输入,存储,打印。
答案 0 :(得分:0)
特定实现可以选择支持实现定义的扩展整数类型(N1570 6.2.5
类型):
4)可能还有实现定义的扩展有符号整数 types 。 38)标准和扩展有符号整数类型 统称为有符号整数类型。 39 )
6)与扩展签名对应的无符号整数类型 整数类型是扩展的无符号整数类型。标准 和扩展无符号整数类型统称为 unsigned 整数类型 .40)
动机可能允许128位宽的整数,但似乎没有兴趣。特定实现更有可能通过扩展来支持这样的整数,例如gcc中的__int128
。
但是,如果您的要求高达10 17 ,那么您可以使用标准的无符号整数类型,例如unsigned long long int
。它保证至少为64位宽,因此可能的范围至少为[0,2 64 -1],略大于18 * 10 18 。
请注意,在C99中引入了long long
类型,但即使是较旧的C89编译器也可能通过扩展支持它们。有关任何详细信息,请查看编译器的文档。
printf()
和scanf()
都需要格式说明符中的前缀ll
。例如:
unsigned long long n = ULLONG_MAX;
printf("lld", n);