Для 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. Очевидно, это не то, чтопроисходит

Можете ли вы объяснить, что делает компилятор или что происходит во время выполнения? Почему результат ноль?

В некотором роде отказ от ответственности: яя абсолютно уверен, что ты выигралт (и, вероятно, не должент) использовать этот код. Я знаю, что никогда не буду. Тем не менее, мне интересно узнать, почему он действует таким образом и что именно происходит.

Ответы на вопрос(24)

Ваш ответ на вопрос