Поведение кода С#


person Jainendra    schedule 04.06.2012    source источник
comment
stackoverflow.com/questions/2371118/   -  person Gopi    schedule 04.06.2012
comment
Это правильный дубликат: stackoverflow.com/questions/4287839/   -  person Tim Schmelter    schedule 04.06.2012
comment
См. его сбивающий с толку вопрос (читать интервью типа). Если = сначала имеет приоритет, то затем происходит приращение, что означает, что i должно быть 3. Если ++ имеет приоритет первым, то после увеличения он должен присвоить 3 в i.   -  person Nikhil Agrawal    schedule 04.06.2012
comment
Он будет скомпилирован в int i = 2; int topOfStack = я; я++; я = вершина стека;   -  person Viacheslav Smityukh    schedule 04.06.2012


Ответы (2)


В зависимости от того, где вы разместили +-операторы, присвоенное значение увеличивается до или после:

i = ++i;

Таким образом, i подсчитывается перед назначением.

i = i++;

Таким образом, i подсчитывается после присвоения.

person Mario S    schedule 04.06.2012

Потому что оператор = имеет приоритет первым.

MSDN: Приоритет и ассоциативность операторов.

Попробуй это:

int i = 2;
i = ++i; // or write just ++i;
Console.WriteLine(i);
person papaiatis    schedule 04.06.2012
comment
Да. Но он должен увеличивать i после, не так ли? - person Viacheslav Smityukh; 04.06.2012
comment
Прочитайте это: stackoverflow.com/a/6716217/675462 - person papaiatis; 04.06.2012