позволяет сказать, что у меня есть два массива int, array1 и array2.Приращение двух индексов сразу
Является ли эта линия:
array1[i++] = array2[j++];
равно это:
array1[i] = array2[j];
i++;
j++;
?
позволяет сказать, что у меня есть два массива int, array1 и array2.Приращение двух индексов сразу
Является ли эта линия:
array1[i++] = array2[j++];
равно это:
array1[i] = array2[j];
i++;
j++;
?
Да они эквивалентны, если вы написали #DEFINE i j
или #DEFINE j i
, в этом случае поведение первого фрагмента является неопределенным.
Жаль. Я только что отложил каждый ответ на http://stackoverflow.com/questions/35318980/java-how-to-create-an-arraylist-of-integer-arrays?noredirect=1, и поэтому вам нужна карма. – Bathsheba
Ну что ж, это от меня –
... и не оба определяет :) – ryanpattison
Да, это разрешено. Вы не изменяете одну и ту же переменную дважды в одном из операторов без точки последовательности, так что вы в порядке.
Если вы сделали это, однако, вы бы вызвать undefined behavior:
array1[i++] = array2[i++];
Но это было бы хорошо, так как оператор запятая представляет точку последовательности:
array1[i++] = (j++,j++);
Я не могу согласиться с тем, что второй пример «отлично»! Это может быть не неопределенным, но это нереально и сбивает с толку ... –
Да, они эквивалентны. – haccks
Прежде чем вы получите ответ, позвольте мне спросить вас, вы пытались написать образец кода и проверить выход? Что ты получил? Какую часть вы не понимаете? –
Пожалуйста, покажите свое исследование до времени. Сначала прочитайте страницу [Ask]. –