Para i = 0, por que (i + = i ++) é igual a 0?
Pegue o seguinte código (utilizável como um aplicativo de console):
static void Main(string[] args)
{
int i = 0;
i += i++;
Console.WriteLine(i);
Console.ReadLine();
}
O resultado dei
é 0. Eu esperava 2 (como alguns dos meus colegas fizeram). Provavelmente o compilador cria algum tipo de estrutura que resulta emi
sendo zero.
A razão pela qual eu esperava 2 é que, na minha linha de pensamento, a declaração da mão direita seria avaliada primeiro, incrementando i com 1. Do que é adicionado a i. Desde que eu já é 1, é adicionar 1 a 1. Então 1 + 1 = 2. Obviamente, isso não é o que está acontecendo.
Você pode explicar o que o compilador faz ou o que acontece no tempo de execução? Por que o resultado é zero?
Algum tipo de aviso: Estou absolutamente ciente de que você não vai (e provavelmente não deveria) usar esse código. Eu sei que nunca vou. No entanto, acho interessante saber porque age de tal maneira e o que está acontecendo exatamente.