Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c语言中表示大于long的数_C - Fatal编程技术网

如何在c语言中表示大于long的数

如何在c语言中表示大于long的数,c,C,我需要一个变量来表示C中的数字600851475143,但该值大于long的最大值,即2147483647。我应该使用什么数据类型?使用无符号long。这将只允许数字>=0,但它将扩展您的范围。我会确保您的长类型为64位,因为这也会扩展您的值范围 您还可以使用gmplib,它是在LGPL下发布的:除了使用任意精度的整数数学库之外,正如@H2CO3所建议的,如果您计划使用如此大的数字而不担心溢出,这可能是您最好的选择,您应该检查编译器/平台文档,以获得可表示的最大数量 如果不需要有符号算术,可以使

我需要一个变量来表示C中的数字
600851475143
,但该值大于long的最大值,即
2147483647
。我应该使用什么数据类型?

使用无符号long。这将只允许数字>=0,但它将扩展您的范围。我会确保您的长类型为64位,因为这也会扩展您的值范围


您还可以使用gmplib,它是在LGPL下发布的:

除了使用任意精度的整数数学库之外,正如@H2CO3所建议的,如果您计划使用如此大的数字而不担心溢出,这可能是您最好的选择,您应该检查编译器/平台文档,以获得可表示的最大数量

如果不需要有符号算术,可以使用
无符号长
无符号长
,否则
有符号长
。请记住,本标准并未明确规定其尺寸,仅规定了最小尺寸(来自C99标准草案-附录E):


使用整数类型
long


它至少适用于-9223372036854775807
无符号长
<代码>长-长<代码>无符号长-长?使用bigint库?…字符串<代码>双倍<代码>长双精度?一切取决于你的需要!搜索C数据类型及其大小。有些编译器甚至支持128位整数。如果你想得到更好的建议,你应该告诉我们如何处理这个数字。关于您试图解决的问题,您给我们的信息太少。可能是输入错误,但为了避免在帖子中留下错误信息:“这将只允许数字>=0”@SevenBits以确保整数类型为64位,简单使用
int64\t
uint64\t
@LorenzoDonati谢谢,是的,这是一个输入错误。我现在就纠正它。但是它自己定义的那些类型的大小又是实现定义的,不是吗?或者为什么在我知道的所有平台上,long的大小在32位和64位的arch上都有所不同?@Zaibis Lorenzo Donati发布了最小值。这些值由实现定义,但至少涵盖上述范围,因此
可以是4个或更多8位字节。
#define LONG_MAX +2147483647
#define LONG_MIN -2147483647
#define LLONG_MAX +9223372036854775807
#define LLONG_MIN -9223372036854775807
// [...]
#define ULONG_MAX 4294967295
#define ULLONG_MAX 18446744073709551615
#include <stdio.h>
int main(int argc, char *argv[]) {
  long long big = 600851475143;
  printf("%lld\n", big);  // prints 600851475143
  return 0;
}