3.8.6 “?”运算符

“?”运算符首先计算表达式1的值,然后根据表达式1的真假接着计算其余表达式的值,并输出结果。“?”运算符是三目操作符,其一般形式如下。


EXP1?EXE2:EXP3;


其中,EXP1、EXP2和EXP3是表达式。“?”运算符作用是在计算表达式EXP1的值后,如果其值为真,则计算表达式EXP2的值,并将其结果作为整个表达式的结果;如果表达式EXP1的值为假,则计算表达式EXP3的值,并将结果作为整个表达式的结果。“?”运算符的程序示例如下。


include<stdio.h>//头文件

void main()//主函数

{

int x,y;//定义变量

x=17;//赋值

y=x>5?10:20;//使用“?”运算符,为y赋值

printf(“y=%d\n”,y);//输出结果

}


该程序可在KeilµVision3集成开发环境中运行,执行结果如下。


y=10


本例中,首先判断x>5,其值为真,所以执行第一个表达式将10赋给y。若用if-else语句改写,有下面的等价程序。


include<stdio.h>//头文件

void main()//主函数

{

int x,y;//定义变量

x=17;//赋值

if(x>5)//使用if语句,为y赋值

{

y=10;

}

else

{

y=20;

}

printf(“y=%d\n”,y);//输出结果

}


这段程序同样可以在KeilµVision3集成开发环境中运行,执行结果和前面相同。比较两程序,从中可以看出使用“?”运算符,可以大大简化程序。