2016-01-04 2 views
0

Я хочу знать, как следующий код выводит вывод «-1».Приоритет оператора в java

class Demo1 
{ 
    public static void main(String[] arg) 
    { 
    int i,j; 
    for(i=-2,j=2;i++>0;j--) 
    { 
       i=++i; 
    } 
    System.out.print(i); 
    } 
} 

Этот выше код производит выходные данные «-1», но как? Может ли кто-нибудь объяснить это? Спасибо заранее!

+1

Возможные дубликатом [Разница между I ++ и ++ i в цикле?] (http://stackoverflow.com/questions/484462/difference-between-i-and-i-in-a-loop) –

ответ

1

В ваш цикл for(i=-2,j=2;i++>0;j--)i получит приращение первых перед сравнением, в тот момент i является -1 и так как это не > 0 это выход из цикла.

1

i начинаются с -2. Вы проверяете, больше ли i++, 0. Это приводит к ошибке с -2<0. Postincrement в вашем состоянии для for loop производит значение i = -2 + 1 впоследствии

0
  1. i=-2; Поскольку i++>0 является false (потому что -2<0) она выходит из цикла.
  2. В настоящее время i с посылкой до -1.
  3. В заявлении на печать теперь отображается значение i, которое равно -1.
0

ваш ответ - из-за цикла, который вы написали. Ваш поток не входит внутрь для цикла. Начальное значение переменной i равно -2 и j равно 2, Ваше условие для «for loop» равно - i должно быть больше 0 (с момента его приращения), и здесь ваш код не попадает внутрь «for loop», поскольку значение в i равно -2, а затем происходит приращение post (i ++), а значение i становится равным -1, и оно печатается так. для получения более подробной информации, вы можете прочитать pre & post increment

0

ничего общего с оператором старшинства.

Независимо от того, в каком порядке операторы в i++>0 выполняются результат всегда один и тот же: Как вы начинаете с i = -2, результат будет false и значение i будет -1

Смежные вопросы