Как отметил г-н Марсело Кантос, аргументы каждого оператора оцениваются слева направо.Поэтому вот то, что я думаю, это выполнение
a[(a=b)[3]]
Здесь внешний 'a' будет извлекать "1,2,3,4", а затем оценивается его аргумент (a = b) [3].Таким образом, теперь a = b и возвращается элемент с индексом 3 в массиве b, на который также указывает a.
Следовательно, мы получаем '0' из оценки аргумента.Как было сказано ранее, external a все еще ссылается на старое содержимое. Таким образом, мы получаем [0] в массиве 1,2,3,4.
Поэтому мы получаем '1'.
Это мойпонимание.Пожалуйста, дайте мне знать, если это не так.
Спасибо,