条件运算符?:

条件运算符?:

在许多程序设计语言中,条件运算符(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

#include

#include

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语句的函数调用替换? :)。

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

0: #include

1: int main () {

2: int a=0, b=0;

3:

4: const bool cond = ...;

5:(cond ? a : b) = 1;

6: std::cout << "a=" << a << ','

7: << "b=" << b << '\n';

8:}

在此例中,如果第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)

相关风暴

美国州MD:美国州名缩写“MD”代表的是哪个州?
bt365博彩手机版

美国州MD:美国州名缩写“MD”代表的是哪个州?

🌧️ 07-02 👁️ 5189
SNK40周年游戏合集亚洲区4月发售
3658官方网

SNK40周年游戏合集亚洲区4月发售

🌧️ 07-02 👁️ 8901
Word2021纸张大小怎么设置 操作方法
3658官方网

Word2021纸张大小怎么设置 操作方法

🌧️ 07-12 👁️ 3343
10款少儿编程软件汇总,和孩子一起研究学习编程
bt365博彩手机版

10款少儿编程软件汇总,和孩子一起研究学习编程

🌧️ 07-12 👁️ 8123