如何在C中扫描long long long int

alp*_*eek 1 c scanf

我试过long long成功扫描整数; 但是,我不知道如何扫描更大的整数long long.如何将一个扫描整数更大的long long在C?例如,long long long.

ric*_*ici 7

没有标准的库函数可以保证与更宽的整数一起使用long long int.而且没有比它宽的便携式数据类型long long int.(另外,long long int不保证长度超过64位,也可能是宽度long.)

换句话说,如果你想使用非常大的整数,你需要一个库.这些通常被称为"bignum库",你可以轻松搜索一个.

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

从理论上讲,一个C实现可以具有整数比更宽long long,在这种情况下的最宽,例如整数类型(符号和无符号)将被称为intmax_tuintmax_t.否则,以及更常见的,intmax_t并且uintmax_t是类型定义long longunsigned long long.您可以通过应用长度修饰符来使用intmax_t变量scanfprintf函数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;
}
Run Code Online (Sandbox Code Playgroud)