14.12 Conditional operator

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

The ?: operator is called the conditional operator. It is at times also

called the ternary operator.

conditional-expression:

conditional-or-expression

conditional-or-expression ? expression : expression

A conditional expression of the form b ? x : y first evaluates the

condition b. Then, if b is true, x is

evaluated and becomes the result of the operation. Otherwise, y is

evaluated and becomes the result of the

operation. A conditional expression never evaluates both x and y.

The conditional operator is right-associative, meaning that operations are

grouped from right to left.

[Example: For example, an expression of the form a ? b : c ? d : e is

evaluated as

a ? b : (c ? d : e). end example]

The first operand of the ?: operator must be an expression of a type that

can be implicitly converted to

bool, or an expression of a type that implements operator true. If neither

of these requirements is

satisfied, a compile-time error occurs.

The second and third operands of the ?: operator control the type of the

conditional expression. Let X and Y

be the types of the second and third operands. Then,

?If X and Y are the same type, then this is the type of the conditional

expression.

?Otherwise, if an implicit conversion (?3.1) exists from X to Y, but not

from Y to X, then Y is the type of

the conditional expression.

?Otherwise, if an implicit conversion (?3.1) exists from Y to X, but not

from X to Y, then X is the type of

the conditional expression.

?Otherwise, no expression type can be determined, and a compile-time error

occurs.

The run-time processing of a conditional expression of the form b ? x : y

consists of the following steps:

?First, b is evaluated, and the bool value of b is determined:

If an implicit conversion from the type of b to bool exists, then this

implicit conversion is performed to

produce a bool value.

Otherwise, the operator true defined by the type of b is invoked to produce

a bool value.

?If the bool value produced by the step above is true, then x is evaluated

and converted to the type of

the conditional expression, and this becomes the result of the conditional

expression.

?Otherwise, y is evaluated and converted to the type of the conditional

expression, and this becomes the

result of the conditional expression.

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