条件运算符?:

在许多程序设计语言中，条件运算符（conditional operator, ?:）是一个基本的条件语句。条件运算符最初起源于BCPL程序设计语言。

用法

?:的一般形式为

 <表达式1> ? <表达式2> : <表达式3> 

其中表达式1为布尔表达式，或真或为假。若表达式1为真，则返回表达式2的值作为整个条件表达式的值。若条件为假，则返回表达式3的值。例如
 max =(a > b)? a : b ;
的执行结果就是将a和b中最大值赋给max. 

 Actionscript 3 
condition ? value_if_true : value_if_false

C语言变种
GNU允许C语言省略条件表达式中的表达式2省略，此时表示表达式2与表达式1相同。例如：
 a = x ? : y;
等价于
 a = x ? x : y;
但是如果x是一个表达式，仅求值一次。C#提供了类似的特性
 a = x ?? y;
与"x?:y"的用法不同，??只判断x是否为null，而不是判断真假。

C++
在C++中，由于C++明确区分初始化和赋值，有时使用if-else的条件赋值语句并不可行。在这种情形下总是可能使用函数调用，但是这样做会显得很笨重而且不简洁。例如，如果你想要根据条件传递不同的值作为构造函数的参数，单纯使用if-else语句根本不可能;在这种情况下，可以使用条件赋值表达式，或函数调用。注意有些类型允许初始化，但不允许赋值，或者赋值运算与构造函数不全相同。对于引用类型后者为真，例如：
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(int argc, char** argv)
{
    string name;
    ofstream fout;
    if(argc > 1 && argv[1])
    {
        name = argv[1];
        fout.open(name.c_str(), ios::out | ios::app);
    }

    ostream& sout = name.empty() ? cout : fout;
}

在这种情况下，用if-else语句替换条件运算符（? :）变得不可能。（虽然可以用包含if-else语句的函数调用替换? :）。

进一步，三目运算符能够作为一个可以被赋值的左值。例如

#include <iostream>
int main () {
    int a=0, b=0;

    const bool cond = ...;
    (cond ? a : b) = 1;
    std::cout << "a=" << a << ','
              << "b=" << b << '\n';
}

在此例中，如果第5行的布尔变量cond为真，值1会赋给变量a，否则赋值给b.

Python

Python程序设计语言使用一种不同的语法处理条件表达式：
value_when_true if condition else value_when_false
这一特性在Python 2.5以前的版本并不可用。

Common Lisp
Common Lisp的每个表达式都有返回值：
(if (> a b) x y)

Category:控制流程
Category:三元運算
Category:运算符_(编程)
Category:带有代码示例的条目