条件运算符?:在许多程序设计语言中,条件运算符(conditional operator, 用法
<表达式1> ? <表达式2> : <表达式3> 其中表达式1为布尔表达式,或真或为假。若表达式1为真,则返回表达式2的值作为整个条件表达式的值。若条件为假,则返回表达式3的值。例如 max =(a > b)? a : b ; 的执行结果就是将a和b中最大值赋给max. Actionscript 3condition ? 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++明确区分初始化和赋值,有时使用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语句的函数调用替换? :)。 进一步,三目运算符能够作为一个可以被赋值的左值。例如 0: #include <iostream>
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程序设计语言使用一种不同的语法处理条件表达式: value_when_true if condition else value_when_false
这一特性在Python 2.5以前的版本并不可用。 Common Lisp的每个表达式都有返回值: (if (> a b) x y)
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia