gpt4 book ai didi

C++ : overflow in implicit constant conversion [-Woverflow]

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:09:16 27 4
gpt4 key购买 nike

long long sum;
sum=pow(10,19);
cout<<sum;

C++ 中的上述代码给出了错误:

overflow in implicit constant conversion [-Woverflow]

虽然以下代码运行良好:

long long sum;
sum=pow(10,18);
cout<<sum;

可能是什么问题?

最佳答案

问题是 long long 太小,无法容纳 pow(10,19) 的结果。

long long 通常是 64 位,一个 64 位整数可以容纳大约。 1.8*10^19 个不同的值。但是,由于它是有符号的,您只能得到它的一半(另一半用于负值)。而其中的一半是0.9*10^19,显然小于10^19。

这里的另一个问题(但不是警告/溢出的原因)是 pow() 函数返回一个浮点值。因此,即使结果适合 long long(它不适合),您也可能会失去一些精度而得不到精确的整数结果。

编辑:当然,您可以在这种情况下使用 unsigned long long。这对于 10^19 足够了,但对于 10^20 就不够了。因此,当您使用不适合 unsigned long long 的类似大数时,您只是将问题推迟到以后。

关于C++ : overflow in implicit constant conversion [-Woverflow],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39625579/

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