Вообще-то это два разных оператора.
А зачем оно нужно таким?
https://stackoverflow.com/questions/24853/what-is-the-difference-between-i-and-i
https://stackoverflow.com/questions/24853/what-is-the-difference-between-i-and-i
Частности зависят от языка программирования, насколько я помню.
Для Java: при префиксном инкременте (++i) значение переменной i увеличивается на 1 и сразу в выражении учитывается увеличенным, при постфиксном декременте значение переменной также увеличивается сразу, но для вычисления выражения учитывается старое значение. При повторном обращении к той же переменной в том же выражении она в обоих случаях уже будет учитываться увеличенной на 1.
То есть:
i = 1
2 + i++ // результат выражения равен 3, i равно 2
j = 1
2 + ++j // результат выражения равен 4, j равно 2
В С и С++, это работает немного по-другому, подробностей не знаю, но вроде как при множественной инкрементации / декрементации переменной внутри одного выражения при расчётах во всех случаях вместо [i на момент вычисления значения] будет подставлено [i после того, как все операции над ним были совершены].
Для Java: при префиксном инкременте (++i) значение переменной i увеличивается на 1 и сразу в выражении учитывается увеличенным, при постфиксном декременте значение переменной также увеличивается сразу, но для вычисления выражения учитывается старое значение. При повторном обращении к той же переменной в том же выражении она в обоих случаях уже будет учитываться увеличенной на 1.
То есть:
i = 1
2 + i++ // результат выражения равен 3, i равно 2
j = 1
2 + ++j // результат выражения равен 4, j равно 2
В С и С++, это работает немного по-другому, подробностей не знаю, но вроде как при множественной инкрементации / декрементации переменной внутри одного выражения при расчётах во всех случаях вместо [i на момент вычисления значения] будет подставлено [i после того, как все операции над ним были совершены].
В C и C++ если использовать в одном выражении несколько раз, будет неопределённое поведение. То есть так делать нельзя.
За некоторыми исключениями вроде использования &&, || и запятой между подвыражениями, содержащими модификацию одной и той же переменной.
За некоторыми исключениями вроде использования &&, || и запятой между подвыражениями, содержащими модификацию одной и той же переменной.
хорошо бы чтоб во всех языках оно было неопределённым, а то заябывают задачки типа:
i = 1;
x = i++ + ++i;
x?
i = 1;
x = i++ + ++i;
x?
You're breathtaking!
Чтобы написать коммент, необходимо залогиниться