在我的情況下,兩個INT_MAX編號的乘積是296447233
,這是不正確的。C/C++中兩個INT_MAX麻煩的產品不正確
long long int product = 0;
product = 2137483647 * 2137483647;
printf("product: %lli\n", product);
我做錯了什麼,以及如何糾正? 謝謝!
在我的情況下,兩個INT_MAX編號的乘積是296447233
,這是不正確的。C/C++中兩個INT_MAX麻煩的產品不正確
long long int product = 0;
product = 2137483647 * 2137483647;
printf("product: %lli\n", product);
我做錯了什麼,以及如何糾正? 謝謝!
您的2137483647
都是int
類型。所以他們保持這種類型和溢出。
讓他們long long
S:
product = 2137483647LL * 2137483647LL;
或投:
product = (long long)2137483647 * 2137483647;
嘗試
product = 2137483647LL * 2137483647LL;
,以確保編譯對待,只要長
哦,我+ 1'指出'LL'。 – Mysticial 2012-02-29 18:25:53
庵的數字。 ..INT_MAX是2147483647(對於32-bi t ints)。你害羞了1000萬。 – 2012-02-29 18:33:19
哦,不!!!!!!你好,我得到了INT_MAX錯誤。感謝您指出! – newprint 2012-02-29 18:50:19