Por que a operação incremental como “a [i] = i ++;” resulta em comportamento indefinido? [duplicado]

Duplicata Possível:
Comportamento indefinido e pontos de seqüência

#include <iostream>
using namespace std;

int main()
{
int x[3] = {};
int i=0;
x[i] = i++;
cout << x[0] << " " << x[1] << endl;
return 0;
}

O Controlador de Código está me dando isto: Linha 9: aviso: a operação em 'i' pode ser indefinida Por que a operação é indefinida?