3个长长数的乘法在C ++和Python中给出了不同的答案

时间:2013-11-03 07:44:00

标签: c++ python multiplication

unsigned long long a,b,c;
cin>>a>>b>>c;
cout<<(a*b*c);

输入:512 294967268 279632277 输出:5337484673731225600

但是,当我在Python中512 * 294967268 * 279632277时,我得到的输出是:

42230972821150328832L

为什么我会得到不同的答案?

1 个答案:

答案 0 :(得分:6)

肯定会在C ++中溢出。

Python具有任意大小的数据类型来存储结果。因此,如果要存储的值很大,则数据类型的 size 也会自动变大。

>> x = 512 * 294967268 * 279632277
>> x
42230972821150328832L
>> type(x)
<type 'long'>
>> x.__sizeof__()
36
>> x = x * x
>> x
1783455065420737763677831948901730484224L
>> type(x)
<type 'long'>
>> x.__sizeof__()
44

因此实际上对数据类型的大小没有限制。可用内存定义了理论限制。