有人可以請解釋編譯器評估以下表達式的順序。結果出來到30,但我不知道如何。 根據BODMAS,如果我是正確的,應首先評估括號,然後除法,然後乘法,然後加減。但這個命令並沒有給我正確的答案。輸出是什麼? BODMAS?
public static void main(String args[]) {
int a = 30 - 12/(2 * 5) + 1;
System.out.println(a);
}
有人可以請解釋編譯器評估以下表達式的順序。結果出來到30,但我不知道如何。 根據BODMAS,如果我是正確的,應首先評估括號,然後除法,然後乘法,然後加減。但這個命令並沒有給我正確的答案。輸出是什麼? BODMAS?
public static void main(String args[]) {
int a = 30 - 12/(2 * 5) + 1;
System.out.println(a);
}
根據BODMAS,答案應該是30.
int a = 30 - 12/(2 * 5) + 1;
支架首先評估 -
2*5 = 10
司下一 -
12/10 - 1
加/減 -
30 -1 + 1
回答 - 30
當然哦!我是愚蠢的,並計算12/10爲1.2:/ 謝謝Ankur! –
@JeevanKaur請接受回答 –
你的運算符優先級的理解是正確的。
原始表達式:
首先,支架進行評估:讓我們一步打破這種表達下降步
30 - 12/10 + 1;
然後,根據運算符優先級,*
,/
和%
操作被評估。在你的情況下,你只有一個/
運營商。需要注意的是,兩個操作數INT S,所以/
將執行integer division,返回結果的只有「全」部分,即1
:
30 - 1 + 1;
不,我們評估+
S和-
期從左至右:
29 + 1;
30;
這是我搞亂的「整體」部分。感謝您澄清Mureinik! –
是的。乘法必須首先發生(因爲它在括號內)。 2 * 5是10. 12/10是1(使用整數算術)。 30 - 1 + 1是30.你認爲結果是什麼?爲什麼?考慮到除法運算符的RHS包含括號內的乘法運算,您希望在乘法運算之前發生除法運算? –