2016-11-15 1 views
-2
int i=1; 
int j=10; 
if(i++ > --j) 
{ 
    System.out.print("i= " + i + "  j= " + j); 
} 

Frage gestellt vonInterviewer Was die Ausgabe sein wird und warum?Was wird die Ausgabe und warum?

Ich habe diese Frage versucht und festgestellt, dass es keine Ausgabe geben wird, weil , wenn Bedingung falsch wird.

Ich kann diese Situation nicht verstehen, bitte jemand erklären?

+3

'a ++' bedeutet, nimm den Wert von 'a' und füge dann einen hinzu,' --a' bedeutet, ziehe eins von a ab und nimm dann den Wert. Die 'if' Aussage, die Sie haben, sagt' wenn 1 mehr als 9 ist, was falsch ist. Nach der if-Anweisung bin ich 2 und j werde 9. – BretC

+1

Diese Frage würde viel sinnvoller sein mit 'int i = 1; int j = 2; '! – Seelenvirtuose

+0

@Seelenvirtuose stimme ich ganz zu. Aber ich stelle mir vor, dass der Interviewer die Operatoren "postfix" und "prefix" eingefügt hat, um OP auszuschalten und zu sehen, ob OP immer noch die Antwort erhält, wenn ein ungewöhnliches Problem auftritt. –

Antwort

1

Sie haben Recht, es wird nichts ausgedruckt, da die if-Anweisung niemals wahr sein wird.

0

Es gibt keine Ausgabe wie in wenn Bedingung i wird 1 (als Post-Inkrement-Operator) und j wird 9 (als Pre-Dekrement-Operator), so dass in diesem Fall die 1> 9 falsch wird.

+0

habe es .......... –

+0

Wenn Sie es ändern, wenn (i ++ <- j) es wird i = 2 j = 9 drucken. Es wird 1 <9 und die, wie ich Postfix-Operator hat Es wird nach dem Vergleich erhöht. Also ich werde 2 sein. – User14141111

Verwandte Themen