[英]Java Arithmetic expression
以下表達式的計算結果為14。
int a=4;
int b=6;
int c=1;
int ans= ++c + b % a - (c - b * c);
System.out.print(ans);
這就是我的計算方式
1. (c - b * c) // since bracket has highest preference
ans : -5
2. ++c //since unary operator has next highest preference
ans : 2
3. b%a // % has higher preference than + and -
ans : 2
因此,2 + 2-(-5)= 9
如您所見,我得到的值是9。 不知道我的計算方式出了什么問題(很確定我最終會看起來很愚蠢)
編輯:我指的是以下鏈接的優先級和關聯。 https://introcs.cs.princeton.edu/java/11precedence/
有人可以解釋16級和13級括號之間的區別嗎? 我認為13級括號僅用於類型轉換。 這就是為什么我考慮使用16級括號來評估表達式。
評估順序與優先級不同。 Java 總是從左到右求值 (在數組訪問方面有一點警告)。
實際上,您正在評估以下表達式,因為發生的第一件事是c
的預增量:
2 + 6 % 4 - (2 - 6 * 2)
然后,優先級描述如何組合值。
當您在c上使用pre-increment
運算符時。 因此,應用后increment
上c
值c
將是2
。 現在:
(c - b * c)
將計算為(2 - 6 * 2)= -10
因此,最終表達式將是2 + 2 - (-10) = 14
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.