Для i = 0, почему (i + = i ++) равно 0?
Возьмите следующий код (можно использовать как консольное приложение):
static void Main(string[] args)
{
int i = 0;
i += i++;
Console.WriteLine(i);
Console.ReadLine();
}
Результатi
0. Я ожидал 2 (как и некоторые из моих коллег). Вероятно, компилятор создает какую-то структуру, которая приводит кi
быть ноль.
Причина, по которой я ожидал 2, заключается в том, что, по моему мнению, утверждение правой руки будет оцениваться первым, увеличивая i на 1. Чем оно добавлено к i. Поскольку я уже равен 1, он добавляет 1 к 1. Таким образом, 1 + 1 = 2. Очевидно, это не то, чтопроисходит
Можете ли вы объяснить, что делает компилятор или что происходит во время выполнения? Почему результат ноль?
В некотором роде отказ от ответственности: яя абсолютно уверен, что ты выигралт (и, вероятно, не должент) использовать этот код. Я знаю, что никогда не буду. Тем не менее, мне интересно узнать, почему он действует таким образом и что именно происходит.