2012-12-20 85 views
2
if(number > 999999999) 
{ 
    int n_billions; 
    n_billions = number/1000000000; 
    cout << number; 

    number -= n_billions*1000000000; 
    cout << number; 
} 

如果我讓數= 90億(9億),我不明白爲什麼我運行程序後的變量number的而不是0是8589934592.從其減去從int長長

它能否是那個號碼是long long類型和n_billions是int

+6

簡短的回答:是的。長的回答:yeeees。 – Doorknob

+0

Nice overflow .. – Rapptz

+0

'number - = n_billions * 1000000000LL;' –

回答

3

你需要確保你通過一個很長很長乘以數十億數,像這樣:

number -= n_billions*1000000000LL; 

否則,你得到n_billions大於2

long long number = 9000000123LL; 
if(number > 999999999) { 
    int n_billions; 
    n_billions = number/1000000000; 
    cout << number << endl; 

    number -= n_billions*1000000000LL; 
    cout << number << endl; 
} 
一個整數溢出

以上prints123如預期。

當然,這相當於獲得,像這樣:

number %= 1000000000;