xen*_*ato 2 c++ python multiplication
unsigned long long a,b,c;
cin>>a>>b>>c;
cout<<(a*b*c);
Run Code Online (Sandbox Code Playgroud)
输入:512 294967268 279632277输出:5337484673731225600
但是,当我512 * 294967268 * 279632277使用Python时,我得到的输出是:
42230972821150328832L
Run Code Online (Sandbox Code Playgroud)
为什么我会得到不同的答案?
肯定会在C++中溢出.
Python具有任意大小的数据类型来存储结果.因此,如果要存储的值很大,则数据类型的 大小也会自动变大.
>> 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
Run Code Online (Sandbox Code Playgroud)
所以实际上对数据类型的大小没有限制.可用内存定义了理论限制.
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |