[an error occurred while processing this directive]
|
А вот (arrayA[index] + arrayB[index++]) точно так же абсолютно некорректно.
Просто нельзя в одном большом выражении мешать index и index++, как и index и ++index или несколько пре/пост-инкрементов ставить, так как порядок вычисления подвыражений не определён (точнее, определён только для && и ||
Я же ниже писал уже - в
if(exprA != exprB) operator
порядок вычисления подвыражений exprA и exprB произвольный и отдан на откуп компилятору.
Можно эту ситуацию ещё так повернуть: if( A != B ) с точки зрения языка эквивалентно if( B != A ), "и на что вы надеялись?"
Кроме этого постинкремент в exprB должен выполниться после использования индекса в exprB, но может быть выполнен в любой момент между этим использованием и началом тела if. Может даже после выполнения сравнения, а может ещё в середине вычисления exprB.
Просто надо аккуратно относиться к побочным эффектам.