14.11 Conditional logical operators

王朝other·作者佚名  2006-04-12
窄屏简体版  字體: |||超大  

The && and || operators are called the conditional logical operators. They

are also called the "shortcircuiting" logical operators.

conditional-and-expression:

inclusive-or-expression

conditional-and-expression && inclusive-or-expression

conditional-or-expression:

conditional-and-expression

conditional-or-expression || conditional-and-expression

The && and || operators are conditional versions of the & and | operators:

?The operation x && y corresponds to the operation x & y, except that y is

evaluated only if x is true.

?The operation x || y corresponds to the operation x | y, except that y is

evaluated only if x is

false.

An operation of the form x && y or x || y is processed by applying overload

resolution (?4.2.4) as if the

operation was written x & y or x | y. Then,

?If overload resolution fails to find a single best operator, or if

overload resolution selects one of the

predefined integer logical operators, a compile-time error occurs.

?Otherwise, if the selected operator is one of the predefined boolean

logical operators (?4.10.2), the

operation is processed as described in ?4.11.1.

?Otherwise, the selected operator is a user-defined operator, and the

operation is processed as described

in ?4.11.2.

It is not possible to directly overload the conditional logical operators.

However, because the conditional

logical operators are evaluated in terms of the regular logical operators,

overloads of the regular logical

operators are, with certain restrictions, also considered overloads of the

conditional logical operators. This is

described further in ?4.11.2.

14.11.1 Boolean conditional logical operators

When the operands of && or || are of type bool, or when the operands are of

types that do not define an

applicable operator & or operator |, but do define implicit conversions to

bool, the operation is

processed as follows:

?The operation x && y is evaluated as x ? y : false. In other words, x is

first evaluated and

converted to type bool. Then, if x is true, y is evaluated and converted to

type bool, and this becomes

the result of the operation. Otherwise, the result of the operation is

false.

?The operation x || y is evaluated as x ? true : y. In other words, x is

first evaluated and converted

to type bool. Then, if x is true, the result of the operation is true.

Otherwise, y is evaluated and

converted to type bool, and this becomes the result of the operation.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航