Последователност на изпълняване на логическите оператори?
Здравейте,
Искам да ви попитам каква е последователността при изпълняване на логическите опрератори, когато имаме повече от 2.
До колкото знам се сравняват по двойки и резултатът от изпълнението на първата двойка се сравнява със следващия, след това този резултат се сравнява със следващия и т.н. Но откъде започва сравнението и реда на изпълнение - отляво-надясно или отдясно-наляво?
Отдолу имам 2 примера, в които се опитах да тествам това във Visual Studio, за да се уверя от само себе си - но това доведе до повече объркване.
Пример 1 :
bool result = true || false || true && false; // true
bool resultLeft = ((true || false) || true) && false; // false
bool resultRight = true || (false || (true && false)); // true
Този пример връща еднакъв резултат, при реда, в който изкуствено е манипулирано със скоби първоначално да се изпълняват операциите отдясно-наляво.
Пример 2:
bool result = false && false || true && false || true && false || true || true; // true
bool resultLeft = ((((((false && false) || true) && false) || true) && false) || true) || true; // true
bool resultRight = false && (false || (true && (false || (true && (false || (true || true)))))); // false
Този пример връща еднакъв резултат, при реда, в който изкуствено е манипулирано със скоби първоначално да се изпълняват операциите отляво-надясно.
Какво е правилото и къде бъркам?
2ри Въпрос: при сравняване на bool стойности с "|" и "&" (побитови логически операции) винаги ли връща еднаква стойност, както при сравняването със съответно "||" и "&&".
Благодаря много за отличното обяснение!