2017-04-12 2 views
-20

Betrachtet man diesen Ausdruck:java - Welche größere Priorität hat, + oder -

x1 = ++x - x++ + --x 

, wenn der Wert von x eingegeben wird 5

Was die Ausgabe solcher Ausdruck in Java sein wird, und warum?

+0

'x1' wäre' 6' – shash678

+0

Nutzlose Frage .... aber die Antwort ist 6. –

+6

'+' und '-' haben die gleiche Priorität, aber die' ++ 'Präfix/Postfix-Operatoren haben höhere Priorität als '+' und '-'. Siehe [die Tabelle hier] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html). Sie müssen auch bedenken, dass Ausdrücke von links nach rechts ausgewertet werden. – Jesper

Antwort

4

Es gibt keinen größeren Vorrang in + oder -.

Ohne Klammern sind sie nur in der Größenordnung von apperance ausgeführt, lässt Ihr Beispiel betrachten:

public class Test { 

    public static void main(String[] args) { 
     int x = 5; 
     int x1 = ++x - x++ + --x; 
     System.out.println(x1); 
    } 
} 

druckt Es gibt vier Operationen von pre/post Inkrementierung/Dekrementierung:

  • ++x wird vor der Auswertung erhöht (bevor der Wert im Ausdruck verwendet wird)
  • --x dekrementiert vor der Auswertung
  • x++ nach Auswertung inkrementiert wird (nach seinem Wert in dem Ausdruck verwendet)
  • x-- wird decreemnt nach Auswertung

Brechen der Ausdruck Teile:

1) "++x" Das x wird um 1 inkrementiert, bevor es seinen Wert im Ausdruck verwendet, also ist es jetzt:

2) "- x++" die x wird von einem nach der Verwendung von seinem Wert bei der Expression erhöht werden, so ist es:

6 - 6 , but now x=7 

3) "+ --x" die x um eins dekrementiert werden, vor ihrer Wert wird verwendet werden, so dass es übersetzt schließlich:

x1 = 6 - 6 + 6; 

Dies als ausgeführt wird:

x1 = 0 + 6; 
x1 = 6; 

Offensichtlich gibt es keinen größeren Vorrang in + oder -, wie es nur subtrahiert und in der Reihenfolge des Auftretens hinzugefügt wird.

Verwandte Themen