Аноним
Зарегистрирован: 18 February 2005
Сообщения: 13860
Примеры кода: 0
|
Re: Проблемы с приоритетом операторов |
18 January 2007 16:13 |
|
|
|
|
Здравствуйте, nikov, Вы писали:
N>Господа, приветствую!
N>Согласно Ecma-334 (14.2.1), в C# приоритет оператора присваивания ниже, чем приоритет условного тернарного оператора. Тем не менее обнаружилось весьма странное поведение, которое проявляется в следующем фрагменте кода:
N>
N>class Stuff
N>{
N> static void Foo(bool x, bool y, bool z)
N> {
N> Foo(x ? y : z = true);
N> }
N> static void Foo(bool x) { }
N>}
N>
N>Он воспринимается компилятором следующим образом:
N>
N>class Stuff
N>{
N> static void Foo(bool x, bool y, bool z)
N> {
N> Foo(x ? y : (z = true));
N> }
N> static void Foo(bool x) { }
N>}
N>
N>В чем дело?
Учится нужно лучше!!! Не писать тупых структур и не будет возникать идиотских вопросов!!
Если выражение до "?" истино то выполняется то что стоит после знака вопроса, но до двоеточия.
Если ложно то то что после двоеточия. После двоеточия стоит операция присваивания нового значения z.
И затем это значение используется!
Данное сообщение получено с сайта RSDN
|
|