所以我想知道如何获得非常大的数字(10或更多)的总和。 例如:
number1 = 10481481258125812;
number2 = 10041284812488248;
number3 = 10041248812482488;
我想添加这些数字并存储到一个名为sum的变量中,但我以前从未在C中使用如此大的数字。
谢谢!
答案 0 :(得分:3)
如果要使用小于64位的数字,可以使用int64_t / uint64_t / long long。 这些类型的最大尺寸:
int64_t和uint64_t在stdint.h
定义如果您想使用更大的号码,可以使用GMPlib。一个简单的tutrial:https://www.cs.colorado.edu/~srirams/courses/csci2824-spr14/gmpTutorial.html
答案 1 :(得分:1)
试试这个:
#include <stdio.h>
int main ()
{
long long number1 = 10481481258125812;
long long number2 = 10041284812488248;
long long number3 = 10041248812482488;
long long sum = number1 + number2 + number3;
printf("sum : %lld",sum);
}
答案 2 :(得分:0)
使用支持更大数字的long long
。在某些编译器中,您也可以使用long long long
,但是您没有提到您正在使用的编译器。
有关详细信息,请参阅https://en.wikipedia.org/wiki/C_data_types。
答案 3 :(得分:0)
unsigned long long
可以处理如此大的数字,最多可达64位:
#include <stdio.h>
int main() {
unsigned long long number1 = 10481481258125812;
unsigned long long number2 = 10041284812488248;
unsigned long long number3 = 10041248812482488;
unsigned long long sum = number1 + number2 + number3;
printf("sum: %llu\n", sum);
}
答案 4 :(得分:0)
类型long long
被指定为具有至少63个值位和unsigned long long
64个值位。
有些编译器(gcc和clang)支持更大的整数类型,其中128位为__int128
或__int128_t
和__uint128
或__uint128_t
。这些是非标准类型,C库通常不支持它们,因此您需要自己在字符串之间编写转换函数。
除此之外,您还需要一个Arbitrary Precision Arithmetic包,例如GNU multiple precision library。