а кто сказал что &arr[2] == arr[2]??
&arr[2] - это pinter, а arr[2] это int
PS: GCC ругается на это "warning: comparison between pointer and integer"
int i = 5;
int n = i++;
сначала n станет равно i (5), затем i будет увеличен на 1
если ++i, то сначала i будет увеличен, а потом n будет равен результату.