연산자의 평가 순서
9147 단어 pythonjavascriptcppbeginners
내가 논의 할 4 개의 연산자가 있습니다.
AND(&&) , OR(||), 조건부(? :) 및 쉼표(,) 연산자.
위에서 언급한 모든 연산자는 왼쪽에서 오른쪽으로 평가됩니다. 그리고 이 연산자는 왼쪽 피연산자가 먼저 평가되도록 보장합니다. 또한 오른쪽 피연산자는 왼쪽 피연산자가 결과를 결정하지 않는 경우에만 평가됩니다.
// 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"<<endl;
else
cout << "bLeftOperand operand is false but bRightOperand is true. Else case is executed based on order of evaluation"<< endl;
if (iLeftOperand && iRightOperand)
cout << "Both operands are true"<<endl;
else
cout << "iLeftOperand operand is true but iRightOperand is false. Else case is executed because iRightOperand is false" <<endl;
// Although stTempPtr is null pointer program will not crash during execution because of order of evaluation
if (stTempPtr && stTempPtr->m_iCount)
cout << "Struct stTempPtr is valid pointer" <<endl;
else
cout << "Struct stTempPtr is a NULL pointer" <<endl;
// OR (||) operator
// If left side operand is true right side will not be evaluated
if (bLeftOperand || !bRightOperand)
cout << "Either of the operands are true"<<endl;
else
cout << "both operands are false"<< endl;
if (iLeftOperand || iRightOperand)
cout << "Either of the operands are true"<<endl;
else
cout << "iLeftOperand operand is true but iRightOperand is false. Else case is executed because iRightOperand is false" <<endl;
if (stTempPtr)
cout << "Struct stTempPtr is valid pointer" <<endl;
else
cout << "Struct stTempPtr is a NULL pointer" <<endl;
// 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.
단락 평가: 논리적 AND 및 논리적 OR 연산자가 실행되는 방식을 설명하는 데 사용되는 용어입니다. 이러한 연산자에 대한 첫 번째 피연산자가 전체 결과를 결정하기에 충분하면 평가가 중지됩니다. 두 번째 피연산자는 평가되지 않음을 보장합니다.
//Example of a short circuit
int x=20,y=40,z=60;
if(x<y && ++y<z)
cout<<x<<" "<<y<<" "<<z;
else
cout<<x<<" "<<y<<" “<<z;
/* The output will be
20 40 60*/
Reference
이 문제에 관하여(연산자의 평가 순서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vamanacharya/order-of-evaluation-in-operators-255텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)