Я думал о том, чтобы просто поделиться порядок оценки операнда с использованием операторов. Как новичок, всегда возникает путаница в отношении порядка оценки … Есть 4 оператора, которые я буду обсуждать. И (&&), или (||), условное (?:) и запятая (,) оператор.
Все вышеупомянутые операторы оценивали слева направо. И этот оператор гарантирует, что левый операнд оценивается в первую очередь. А также, правый операнд оценивается только в том случае, если левый операнд не определяет результат.
// Variables used bool bLeftOperand = false, bRightOperand = true; int iLeftOperand = 100, iRightOperand = 0; struct TempStruct { int m_iCount; string m_sName; TempStruct():m_iCount(0){} // member initialization }; TempStruct *stTempPtr = NULL;
// AND (&&) Operator // If left side operand is false right side will not be evaluated if (bLeftOperand && bRightOperand) cout << "Both operands are true"<m_iCount) cout << "Struct stTempPtr is valid pointer" <
// OR (||) operator // If left side operand is true right side will not be evaluated if (bLeftOperand || !bRightOperand) cout << "Either of the operands are true"<
// conditional (? :) operator // condition ? expression1: expression2 bLeftOperand ? "operand is true \n" : "operand is false\n" // only one of the expressions are evaluated
//comma operator (,) used to separate two or more expressions // only the right-most expression is considered. int b; int a = (b=3, b+2) //would first assign the value 3 to b, and then assign b+2 to //variable a. So, at the end, variable a would contain the value 5 //while variable b would contain value 3.
Оценка короткометражного состава: Термин, используемый для описания того, как выполняются логические и логические или операторы. Если первого операнда для этих операторов достаточно для определения общего результата, оценка останавливается. Нам гарантировано, что второй операнд не оценивается.
//Example of a short circuit int x=20,y=40,z=60; if(x
Оригинал: “https://dev.to/vamanacharya/order-of-evaluation-in-operators-255”