我尝试成功扫描long long
个整数;但是,我不知道如何扫描比long long
更大的整数。如何在c中扫描整数更大而不是long long
?例如,long long long
。
答案 0 :(得分:7)
没有标准库函数可以保证使用宽于long long int
的整数。并且没有比long long int
宽的可移植数据类型。 (另外,long long int
不能保证长于64位,也可能是long
的宽度。)
换句话说,如果你想使用非常大的整数,你需要一个库。这些通常被称为" bignum图书馆",您在搜索一个图标时遇到的麻烦。
编辑(包括实现有另一种整数类型的理论可能性,如@chux所述):
理论上,C实现可能具有比long long
更宽的整数,在这种情况下,最宽的此类整数类型(有符号和无符号)将被称为intmax_t
和uintmax_t
。否则,更常见的是,intmax_t
和uintmax_t
是long long
和unsigned long long
的typedef。您可以通过应用长度修饰符intmax_t
在scanf
和printf
函数中使用j
个变量。例如:
/* Needed for intmax_t */
#include <stdint.h>
#include <stdio.h>
int main() {
intmax_t probably_long_long;
if (1 == scanf("%jd", &probably_long_long))
printf("The number read was %jd\n", probably_long_long);
return 0;
}