简介
三目运算符,又称条件运算符,是计算机语言的重要组成部分。它是唯一有3个操作数的运算符。
对于条件表达式 x = ( a > b) ? c : d,先计算条件(a>b),然后进行判断。如果(a>b)的值为true,计算c的值,x = c的值;否则,计算d的值,x = d的值。一个条件表达式绝不会既计算c,又计算d。
例子
java函数实现返回a,b,c中最大值:
没有三目运算符:
public static int max(int a, int b, int c) {
if(a>=b && a>=c)
return a;
else if(b>=a && b>=c)
return b;
else
return c;
}
用三目运算符:
public static int max(int a, int b, int c) {
return (a>=b) ? ((a>=c) ? a : c) : ((b>=c) ? b : c);
}
可以很容易地看出来,三目运算符地互相嵌套使用,使得代码整体简洁了很多,但也许会有很多同学说,那我其实用if else也可以实现三目运算符的功能,这个运算符会不会其实有点多余。先不急,来看下接下来的这个例子。
特殊用途
看下面的题目:字母环形解密(填空)
将26个英文字母按顺时针方向排成一个圆环。密钥是一个整数。
已知加密方法如下:
若密钥 key≥0,则从明文字母开始按顺时针方向走 ∣key∣ 步得到密文字母;
若密钥 key<0,则从明文字母开始按逆时针方向走 ∣key∣ 步得到密文字母。
下面的程序输入密文和密钥,输出明文。请在空白处填写适当内容完成该程序。
#include <stdio.h>
int main()
{
char plain, secret;
int key;
scanf(" %c %d", &secret, &key);
____________________
printf("%c\n", plain);
return 0;
}
输入格式
密文(小写字母) 密钥(任意整数)
输出格式
明文(小写字母)
输入样例1
c 5
输出样例1
x
输入样例2
y -3
输出样例2
b
我们从题目的要求可以得到,答案应该大致是如下:
plain=secret-key%26;
if(plain<'a') plain+=26;
if(plain>'z') plain-=26;
我之前也是这么想的,本地测试也是刚好对应,但代码提交上去后是错误的,检查了一番后发现,题目是代码填空题,并且只给了一行,而我写的代码有足足三行,编译器无法通过,思考了一番,想到了三目运算符,于是有了以下代码:
plain = (secret - key % 26 < 'a') ? ((secret - key % 26) + 26) : (((secret - key % 26) > 'z') ? ((secret - key % 26) - 26) : secret - key % 26);
提交后,一次AC,而这道题也是比较典型的,三目运算符的一种运用。
总的来说: 三目运算符有他的特殊使用途径,有些题目,三木运算符的使用,确确实实能起到事半功倍的效果,也希望写的这些能帮到同学们。