Вы были укушены приоритетом оператора и целым делением. Все, что находится в этом выражении ниже, отстоящее от чтения, выполняется с использованием целочисленной математики.
int result = i++ + j - k/j;
Или
int result = 5 + 7 - 3/7;
С i++
приращений i
после она была оценена, i
5 для расчета и 6 после.
Отдела имеет более высокий приоритет, чем сложение или вычитание, так что это действительно так:
int result = 5 + 7 - (3/7);
Все целая математика имеет дробную часть укороченной, так 3/7
является 0.
int result = 5 + 7 - 0;
Там ваш 12 .
И поэтому лучше избегать полагаться на природу прирастающих операторов в более крупных выражениях, они делают выражения трудно понять и подвержены ошибкам. Либо использовать их отдельно как стенографию для i += 1
, как в for(int i = 0; i < something; i++)
, или написать i += 1
.
Ответ 5 плюс 7, так как вы добавляете 'i'. – user3386109
'12 ++' не имеет смысла, поскольку '12' не является переменной. –
* «Я не знаю о до и после приращения» * - Так что узнайте что-нибудь о них! - https://www.youtube.com/watch?v=FkxFPJG5paw –