2015-12-19 5 views
0

Я иду через Оператор приращения и Оператор сокращения, но придерживался логики этой проблемы.Оценка приращения прихода i + i ++ + i + i ++;

class Demo { 

public static void main(String args[]) { 

    i= 0, j= 0; 
    j = i + i++ + i + i++; 

System.out.println("i="+i); 
System.out.println("j="+j); 

} 
} 

Как это оценить?

+3

Что это за язык? – Amit

+0

Не снова - Вы сделали поиск - кроме того, если вы пишете код, который вам трудно читать, что вы ожидаете ?! –

+1

в 'C'' + 'не является точкой последовательности, поэтому он не определен. –

ответ

2

Java имеет правый слева-гарантированный порядок оценки, и это означает, что

j = i + i++ + i + i++; 

вычисляется как (в последовательности)

i  // 0 
i++ // 0 (and i becomes 1) 
i  // 1 
i++ // 1 (and i becomes 2) 

, таким образом, ответ будет 2, 2

+0

Но когда я попытался оценить это выражение, я запутался в int i = 0, j = 1; int k = i + j ++ + ++ i + ++ j + i ++; Как я могу получить выход i = 2, j = 3, k = 6 – Mallik

+0

int i = 0, j = 1; int k = i + j ++ + ++ i + ++ j + i ++; я // 0 J ++ // 1 (и J становится 2) ++ я // 1 ++, J // 3 (и J становится 3) я ++ // 1 0 1 1 3 1 – Mallik

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