簡體   English   中英

Java運算符優先級表達式評估

[英]Java Operator Precedence Expression Evaluation

我有以下可變減速度,賦值和可變減速度

變量e是一個表達式語句,應返回表達式中被撤消變量的值;

e變量中運算符的優先順序是什么?

計算得出等於60;

使用計算器,我得到422。

int a, b, c, d;

a = 10;
b = 2;
c = 1;
d = 20;

e = a + b * d / c + a + b / d;


e = 10 + 2 * 20 / 1 + 10 + 2 / 20;

e = 60;

實際上答案是60.1但是由於variables int表示為60 它發生如下

10 + (2 * (20 / 1)) + 10 + (int)(2 / 20) = 10 + (2 * 20) + 10 + (int)0.1
= 10 + 40 + 10 + 0 = 60

這是概述操作符優先級的鏈接 至於您的結果,這也可以歸因於整數除法(它取結果的下限;例如2/20 = 0 )。

就像在學校一樣,乘法和除法優先於加法。 所以你有了:

10 + 2 * 20 / 1 + 10 + 2 / 20 = 10 + 40 + 10 + 0 = 60
* takes first precedence so first, 2*20 =40,  10 + 40 / 1 + 10 + 2 / 20;
/ takes precedence so ,  10 + 40 + 10 + 0;
+ takes precedence so, 60

這是運算符優先級的鏈接: 運算符優先級

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM