gpt4 book ai didi

c - 如何使该函数适用于非常大的数字?

转载 作者:行者123 更新时间:2023-12-04 03:49:50 25 4
gpt4 key购买 nike

我应该编写一个函数,使用 long long 在 C 中计算三个数字的平均值。 (是的,不是程序,是函数)对于a = LLONG_MAXb = LLONG_MAXc = LLONG_MAX,平均值也是LLONG_MAX

# include <stdio.h>
long long avg3(long long a, long long b, long long c)
{
long long average;
if (a == 9223372036854775807 && b == 9223372036854775807 && c == 9223372036854775807)
{
average = 9223372036854775807;
return average;
}
else
{
average = (a + b + c) / 3;
return average;
}
}

但对于某些数字,该函数不起作用,它会溢出或以某种方式失败。例如:

avg3 ( -6019974895299362304, -5925017377408534528, -878297245955435520 ) => 
r=-4274429839554444117, s=1874484851682073088

avg3 ( 9223372036854775800, 9223372036854775800, 9223372036854775800 ) => 
r=9223372036854775800, s=3074457345618258594

我该如何解决这个问题?

最佳答案

您可以使用__int128 来获得更多内存。

GCC documentation

关于c - 如何使该函数适用于非常大的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64591388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com