Ovde neko nekoga u zdrav mozak, ako mene pitate.
Izraz:
a = arr[a]++;
bi po svoj zdravoj logici morao da bude ekvivalentan:
b = a;
a = arr[a];
arr[b] = arr[b]+1;
Sve drugo je, po mom mišljenju bug u kompajleru. U linku koji je drug Dimković ;-) poslao, data situacija NIJE deklarisana kao nedefinisana.
Šta VC kaže kad mu se podmetne ovaj kod?
int main()
{
int arr[2] = {1, 1};
int a = 0;
a = arr[a]++;
printf("a: %d\n", a);
printf("arr[0]: %d\n", arr[0]);
printf("arr[1]: %d\n", arr[1]);
return 0;
}
koji se kompajlira kao čist C?
M&A.