INFO: Precedence Affects Grouping of Operands, Not Evaluation (37624)
The information in this article applies to:
- Microsoft Visual C++ 1.0
- Microsoft Visual C++ 1.5
- Microsoft Visual C++ 1.51
- Microsoft Visual C++ 1.52
- Microsoft Visual C++ 2.0
- Microsoft Visual C++ 2.1
- Microsoft Visual C++ 4.0
- Microsoft Visual C++, 32-bit Enterprise Edition 5.0
- Microsoft Visual C++, 32-bit Enterprise Edition 6.0
- Microsoft Visual C++, 32-bit Professional Edition 5.0
- Microsoft Visual C++, 32-bit Professional Edition 6.0
- Microsoft Visual C++, 32-bit Learning Edition 6.0
This article was previously published under Q37624 SUMMARY
Operator precedence in C affects how operands are grouped; it does not
necessarily indicate the order in which operands are evaluated. The
logical AND (&&) operator has a higher precedence than the logical OR
(||) operator. Therefore, the statement:
lvalue = operand1 || operand2 && operand3;
is logically equivalent to the following:
lvalue = operand1 || (operand2 && operand3);
However, this grouping does not indicate that the subexpression
(operand2 && operand3) will be evaluated first. In fact, this
statement is a logical OR expression with two operands: operand1 and
"(operand2 && operand3)." Because a logical OR expression evaluates
its operands in left-to-right order, operand1 is evaluated first.
Modification Type: | Major | Last Reviewed: | 12/12/2003 |
---|
Keywords: | kbinfo kbLangC KB37624 |
---|
|