簡體   English   中英

3個長整數的乘法在C ++和Python中給出不同的答案

[英]Multiplication of 3 long long numbers gives different answers in C++ and Python

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

給定輸入:512 294967268 279632277輸出:5337484673731225600

但是,當我在Python中執行512 * 294967268 * 279632277時,得到的輸出是:

42230972821150328832L

為什么我得到不同的答案?

確保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

因此,實際上對數據類型的大小沒有限制。 可用內存定義了理論極限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM