3
我對這個問題的規則感到困惑[一個好的URL可能會節省回答的時間]。我注意到很多時間轉換隱含地起作用,但有時候它是必需的。根據標準,什麼樣的類型轉換顯式冗餘?
例如我曾預計它的工作:
long long a;
int b;
[..]
a = b * 1000;
但事實證明,「A」溢出,它需要
a = (long long) b * 1000;
,由於「一」是「大單」我預想的特別之處它會打擾。
無論如何,除了這個例子,你知道關於這個問題的全面信息來源嗎?沒有'大部分時間都可以',這讓我偏執狂。
編輯:這是否只是'第二部分是否先計算並溢出,緊隨其後的規則'?
EDIT2:如果是
long long a;
int b;
short c;
[..]
c = b + a * 3;
這樣的計算,會做
c = b + (int) a * 3;
確保適當的轉換?
或那就需要
c = (short) b + (int) a * 3;
,或者這將是足以
c = (short) b + a * 3;
那麼,它確實知道你打算將它存儲很長時間,但它認爲你需要int算數來計算將存儲在那裏的結果。 – 2010-08-07 08:26:56
所以通過製作1000個LL就好像在說'嘿,計算中的那兩個數字中的一個是LL,不要做任何愚蠢的事情並且溢出到一個整數中,做一個LL的計算'。這很簡單嗎? – 2010-08-07 08:27:59