Скомпилируйте и запустите этот код на C
#include <stdio.h>
int main()
{
int a[] = {10, 20, 30, 40, 50};
int index = 2;
int i;
a[index++] = index = index + 2;
for(i = 0; i <= 4; i++)
printf("%d\n", a[i]);
}
Выход: 10 20 4 40 50
Теперь для той же логики в Java
class Check
{
public static void main(String[] ar)
{
int a[] = {10, 20, 30, 40, 50};
int index = 2;
a[index++] = index = index + 2;
for(int i = 0; i <= 4; i++)
System.out.println(a[i]);
}
}
Выход: 10 20 5 40 50
Почему на обоих языках разница в выводе, вывод понятен для Java
, но я не могу понять вывод в C
Еще одна вещь, если мы применяем префиксный оператор ++
, мы получаем одинаковый результат на обоих языках, почему?