English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

int m=5;
int n=2;
int Result=m++<<2*--n;
請問這隻程式會怎麼執行阿?
為何結果是20
而不是5*2*(2-1)=10呢?

2006-06-26 14:49:36 · 3 個解答 · 發問者 piyo 1 in 電腦與網際網路 程式設計

3 個解答

原因:運算子的「結合性」

m++<<2*--n =>20
--、++:由右至左,而且它在這個式子的所有運算子裡頭,它是最高的。
從 --n 開始,2*--n,m<<2*--n,m++。

修改:++m<<2*--n =>24

2006-06-26 21:02:39 補充:
--n:2-1,n=12*--n:2*1,2m<<2*--n:5<<2,101(b)<<2(d),10100(b)=>20(d)(m++:m 最後加 1)m++:5+1,m=6結合性:優先相同的運算子,從結合性的「由左至右」或「由右至左」來決定。

2006-06-26 16:56:25 · answer #1 · answered by Big_John-tw 7 · 0 0

這個問題是考你對運算子的優先順序
基本上是這樣
++ Var, -- Var最為優先,
其次是 *
最後是 <<
運算式完成後再作 Var++
所以這個算式 是這樣子
Result = ( m << 2 )*(--n) ) = 5 << 2 = 20;
m++;

2006-06-26 17:01:46 · answer #2 · answered by ? 3 · 0 0

5<<2 = 20
20*1 =20

2006-06-26 15:20:20 · answer #3 · answered by 丹尼爾 4 · 0 0

fedest.com, questions and answers