如何在C中扫描long long long int

时间:2015-02-28 03:44:29

标签: c scanf

我尝试成功扫描long long个整数;但是,我不知道如何扫描比long long更大的整数。如何在c中扫描整数更大而不是long long?例如,long long long

1 个答案:

答案 0 :(得分:7)

没有标准库函数可以保证使用宽于long long int的整数。并且没有比long long int宽的可移植数据类型。 (另外,long long int不能保证长于64位,也可能是long的宽度。)

换句话说,如果你想使用非常大的整数,你需要一个库。这些通常被称为" bignum图书馆",您在搜索一个图标时遇到的麻烦。

编辑(包括实现有另一种整数类型的理论可能性,如@chux所述):

理论上,C实现可能具有比long long更宽的整数,在这种情况下,最宽的此类整数类型(有符号和无符号)将被称为intmax_tuintmax_t。否则,更常见的是,intmax_tuintmax_tlong longunsigned long long的typedef。您可以通过应用长度修饰符intmax_tscanfprintf函数中使用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;
}