У меня возникли проблемы с пониманием следующего кода.Java pre и post incrementing
int count = 0;
for (int i = 0; i < 3; i++){
count += (count++);
System.out.println("count = " + count);
System.out.println("i = " + i);
}
Я понимаю, что цикл выполняется три раза для предварительной формовки следующий
count = count + count
count = 1 + count
Это приводит к следующему, как отсчет первоначально равно 0:
count = 0 + 0
count = 1 + 0 = 1
count = 1 + 1 = 2
count = 1 + 2 = 3
count = 3 + 3 = 6
count = 6 + 1 = 7
Выход ниже, и счет печатается как 0.
count = 0
i = 0
count = 0
i = 1
count = 0
i = 2
Может кто-нибудь объяснить это мне? Благодаря
Я понимаю, что для вопросов, связанных с домашним заданием/кодом, этот вопрос имеет смысл. Но никто не должен писать путаную строку, например 'count + = (count ++),' в производственной системе. –
@MikeRyan Полностью согласен. Если кто-то спросил меня, что сделала эта линия, и я был в славном настроении, я бы ответил «это отклонит ваше предложение о слиянии». – yshavit
Есть ли правило в FindBugs (или аналогичных инструментах с открытым исходным кодом), которое бы поймало это? –