[問題] 關於變數數值的問題

看板EE_DSnP作者 (蒼天已死黃天當立)時間18年前 (2007/10/21 09:23), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
  首先,我用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
文章代碼(AID): #176gduso (EE_DSnP)
文章代碼(AID): #176gduso (EE_DSnP)