条件表达式运算符

C 具有三元运算符:条件表达式运算符 (?:).      

语法

  • 条件表达式:
    表达式。

    逻辑或表达式 ? 表达式 : 条件表达式

逻辑或表达式 必须具有集成,浮动或指针类型。 它进行计算基于其等效性为 0。 序列点遵循 逻辑或表达式。 操作数的计算执行如下所示:

  • 如果 逻辑或表达式 不是等于 0,计算 表达式 。 该表达式该非终止符号的 表达式生成结果计算。 (这意味着计算 表达式 ,仅当 逻辑或表达式 为 true。)

  • 如果 逻辑或表达式 等于 0 条件表达式 计算。 该表达式的结果是 条件表达式的值。 (这意味着 条件表达式 进行计算,仅当 逻辑或表达式 是错误的。)

请注意 表达式条件表达式 计算,但是,不是两个。

条件运算的结果的类型取决于 表达式条件表达式 操作数的类型,如下所示:

  • 如果 表达式条件表达式 的集成或浮动的类型 (它们的类型中可能不同),运算符执行通常算术转换。 该结果的类型是操作数的类型转换之后。

  • 如果 表达式条件表达式 具有相同的结构、联合或指针类型,该结果的类型是同一结构、联合或指针类型。

  • 如果两个操作数具有类型 void,该结果的类型 void。

  • 如果其中一个操作数是指向任何类型的对象,并且,另一个操作数是指向 void,指向对象的指针转换为指向 void 的指针,结果是指向 void。

  • 如果 表达式条件表达式 是指针,而另一个操作数是与值 0 的常数表达式,该结果的类型是指针类型。

在指针的类型相比,在指针指向的类型的任何类型限定符 (const 或 volatile) 是无意义,但是,结果类型都从两个元素的限定符条件。

示例

下面的示例演示用于条件运算符的使用:

j = ( i < 0 ) ? ( -i ) : ( i );

此示例将 i 的绝对值到 j。 如果 i 少于 0, -i 分配给 j。 如果 i 大于或等于 0, i 分配给 j。

void f1( void );
void f2( void );
int x;
int y;
    .
    .
    .
( x == y ) ? ( f1() ) : ( f2() );

在此示例中,两个函数、 f1 和 f2和两个变量, x 和 y,声明。 稍后在程序,因此,如果两个变量是否具有相同的值,函数 f1 调用。 否则, f2 调用。

请参见

参考

条件运算符:?: