-
Anonymous
Порядок работы в Java
Сообщение
Anonymous »
Мне сложно отследить и понять, как Java (и Javascript) обрабатывает следующий код:
Код: Выделить всё
// Java
int i = 0;
int[] a = {10, 20, 30, 40, 50, 60};
a[++i] = a[i++] = a[++i] = ++i;
System.out.println(Arrays.toString(a));
// [10, 4, 30, 4, 50, 60]
Код: Выделить всё
let i = 0;
const a = [10, 20, 30, 40, 50, 60];
a[++i] = a[i++] = a[++i] = ++i;
console.log( JSON.stringify(a)); // [10, 4, 30, 4, 50, 60]
При запуске выводятся значения [10, 4, 30, 4, 50, 60].
Можно даже упростить этот пример:
Код: Выделить всё
int i = 0;
int[] a = {10, 20};
a[i] = ++i;
System.out.println(Arrays.toString(a));
// [1, 20]
Код: Выделить всё
let i = 0;
const a = [10, 20];
a[i] = ++i;
console.log( JSON.stringify(a) ); // [1, 20]
Я ожидал, что это выведет [10, 1], потому что сначала правая сторона. Но результат — [1, 20], но как?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... on-in-java
1737352600
Anonymous
Мне сложно отследить и понять, как Java (и Javascript) обрабатывает следующий код:
[code]// Java
int i = 0;
int[] a = {10, 20, 30, 40, 50, 60};
a[++i] = a[i++] = a[++i] = ++i;
System.out.println(Arrays.toString(a));
// [10, 4, 30, 4, 50, 60]
[/code]
[code]let i = 0;
const a = [10, 20, 30, 40, 50, 60];
a[++i] = a[i++] = a[++i] = ++i;
console.log( JSON.stringify(a)); // [10, 4, 30, 4, 50, 60][/code]
При запуске выводятся значения [10, 4, 30, 4, 50, 60].
Можно даже упростить этот пример:
[code]int i = 0;
int[] a = {10, 20};
a[i] = ++i;
System.out.println(Arrays.toString(a));
// [1, 20]
[/code]
[code]let i = 0;
const a = [10, 20];
a[i] = ++i;
console.log( JSON.stringify(a) ); // [1, 20][/code]
Я ожидал, что это выведет [10, 1], потому что сначала правая сторона. Но результат — [1, 20], но как?
Подробнее здесь: [url]https://stackoverflow.com/questions/79370326/order-of-operation-in-java[/url]