我读到了这个转换int
to long long int
是升级,因此认为不应该有任何问题,因为不会丢失数据,与反之亦然的转换不同。
但是当我乘以二时int
s 具有较大的价值并将其存储在long long int
,它向我显示负数。
Eg:
int a=1000000, b=1000000;
long long int c=a*b;
cout<<c;
上面的代码给了我一个负值。有人可以解释为什么吗?
a*b
仍然是类型int
。评估后,结果是then转换成long long int
。到那时就已经来不及避免溢出了。将您的值之一转换为long long int
在执行乘法之前。尝试这个 :
#include <iostream>
int main()
{
int a = 1000000, b = 1000000;
long long int c = static_cast<long long int>(a)*b;
std::cout << c;
return 0;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)