omportamento definido para expressões
norma C99 diz em US $ 6.5.
Entre o ponto de sequência anterior e o próximo, um objeto deve ter seu valor armazenado modificado no máximo uma vez pela avaliação de uma expressão. Além disso, o valor anterior deve ser lido apenas para determinar o valor a ser armazenado.
(ênfase minha)
ote que o exemplo a seguir é válido (o que parece óbvio a princípi
a[i] = i;
Embora não indique explicitamente o quea
ei
estamos
Embora eu acredite que não, gostaria de saber se este exemplo abrange o seguinte caso:
int i = 0, *a = &i;
a[i] = i;
Isso vainã altere o valor dei
, mas acesse o valor dei
para determinar o endereço onde colocar o valor. Ou é irrelevante atribuirmos um valor ai
que já está armazenado emi
? Por favor, mostre alguma luz.
ergunta @Bonus; A respeitoa[i]++
oua[i] = 1
?