作者Knossos (蒼天已死黃天當立)
看板EE_DSnP
標題[問題] 關於變數數值的問題
時間Sun Oct 21 09:23:03 2007
首先,我用sizeof()的函數,找出long long int的大小為8,照理說,最大正數應該
可以儲存2^63-1,可是電腦卻只可以儲存2^31-1,這是為什麼呢?其他記憶體被吃掉了嗎
上面的問題牽扯到下面這個問題:
#include <iostream>
using namespace std;
int main()
{
unsigned int a;
unsigned int b;
a = , b = 2147483647;
//2 ^ 32 = 2147483648
cout << a*b << endl;
system("pause");
return 0;
}
我現在操控a的數值來影響a*b的結果。我發現,當a=1 or 2時,結果是正確的,螢幕
上顯示我要的結果。可是當a>3後,乘積卻始終不正確。
如果說是因為兩個的乘積超過unsigned int的記憶體容量,那為什麼乘以2時會對?
還是說,兩個unsigned int的四則運算,最多只能顯示出最大正數的兩倍?
這個問題該如何解決?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.32.14