Может кто-нибудь объяснить, почему оператор C# ++ предоставляет разные выходы на основе назначенных переменных. https://msdn.microsoft.com/en-us/library/36x43w8w.aspxУнарный префикс Приращение ++ Оператор Различные выходы
int x = 0;
int y = x++;
Console.WriteLine($"x: {x}");
Console.WriteLine($"y: {y}");
/*Prints
* x: 1
* y: 0
*/
Мое понимание y
создается в x
, что (0), то после назначения y
; x
увеличивается на 1;
int x = 0;
x = x++;
Console.WriteLine($"x: {x}");
/*Prints
* x: 0
*/
Почему такая же логика здесь не применяется? x
должен быть установлен в x
, который равен 0, то после того, как приращение назначения x
на 1 и печать 1 вместо 0
же для этого примера
int x = 0;
x += x++;
Console.WriteLine($"x: {x}");
/*Prints
* x: 0
*/
еще один пример
int x = 0;
x += x++ + x++;
Console.WriteLine($"x: {x}");
/*Prints
* x: 1
*/
Кажется что на заднем плане происходит какая-то другая логика, которую я не понимаю.
Подробное описание того, как работает оператор ++ (оба префикса и постфикса) в C#: http: // stackoverflow.com/a/3346729/1286670 –
@Steve Я не уверен, было ли это намеренно или нет, но вы изменили «Унарный префикс приращения» ++ «Оператор» _ для _ «Унальный префикс приращения» + «Оператор» _ - нет такая вещь – MickyD
Я считаю, что ответ Эрика Липперта, найденный @ Ňuf, охватывает все проблемы этого поста. Если там что-то еще не хватает - пожалуйста, отредактируйте сообщение и уточните, какие части требуют отдельного объяснения. Пожалуйста, не забудьте написать точную пошаговую аргументацию при редактировании - у вас должно быть не более пары дополнительных шагов в дополнение к 5 Eric для операции ++, чтобы охватить весь оператор 'x = x ++'. –