簡體   English   中英

Java算術表達式

[英]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運算符時。 因此,應用后incrementcc將是2 現在:

(c - b * c)將計算為(2 - 6 * 2)= -10

因此,最終表達式將是2 + 2 - (-10) = 14

暫無
暫無

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

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