我们之前接触了条件运算符、逻辑运算符等几种运算符及其表达式。在介绍的过程中,我们一直在描述,运算符和操作数的关系及其操作方式。
回顾之前的知识点,我们发现我们接触过的运算符只有两类:
一类是只有一个操作数的,比如自增、自减运算符++a、b--,还有逻辑运算符中的非!(a>b)
一类是有左右两个操作数的,比如算数运算符a+b,条件运算符a>b
1、基础知识
由于操作数个数的关系,我们将只有一个操作数的运算符叫做一元运算符,将有两个操作数的运算符叫做二元运算符,这两类运算符的功能比较简单,接下来我们介绍一个功能稍微复杂的运算符,这个运算符有三个操作数,所以叫做三元运算符。
先看代码:
哎呀,这部分代码又是?又是:的,是不是加密了?这哪里看得懂呀……,这样的运算符是不是有很多呀,我们是不是需要挨个学习呢?
看到这里可能大家会有这样的疑问,不过大家不需要担心,这样的稍微复杂的运算符仅此一个,而且逻辑还是比较哦简单的。
之所以叫做三元运算符我们知道,那么这个运算符一定有三个操作数,他的语法结构就是:操作数1?操作数2:操作数3;
这个运算符整体的意思就是:如果操作数1成立,整个表达式提供给我们操作数2,如果操作数1不成立,整个表达式提供给我们操作数3。
这样就好理解啦,我们将对应变量的值带入表达式,于是看到表达式应当为(2>1)?18:19;
这里2
不过有粉丝会问,这个三元表达式有啥用呢?那么我们将上述例子带入真实需求来看,比如我们的程序需求为:一个人年龄18岁,生日是本月2号,需要程序判断当前日期,如果当前日期小于2号,那么告诉我们这个人18岁,如果当前日期大于2号,那么告诉我们这个人19岁。我们可以用我们基础语法来解决实际的需求,是不是有恍然大明白的感觉!
2、基础知识拓展
我们将代码简单修改:
我们在分析这段代码的时候,要明白两件事:
1、我们一直在描述的操作数,其实是个泛泛的概念,需要依据具体问题具体分析,这里的操作数有时候是具体的一个数值,有时候就是表达式,比如现在代码中的第一个操作数就是一个用来执行比较的表达式。
2、我们的有些运算符有自己特殊的运行方式,比如之前我们介绍的逻辑或,它的含义是只要两边有一边是成立的,那么整体表达式就成立,从而在运行过程中,如果左边的操作数成立,自动判断整个表达式成立,从而就不运行右边的操作数了。所以我们可以依据对应运算符的特殊运行方式,解决实际问题。
那么现在我们看到的例子就是这种情况,对于三元运算符,我们知道如果操作数1成立,整个表达式提供给我们操作数2,如果操作数1不成立,整个表达式提供给我们操作数3。那么设想一下,对应操作数2和操作数3的位置上不是数值,而是表达式呢?那么是不是说,当系统提供给我们操作数2或者操作数3的时候,如果对应位置上是表达式,就先执行表达式,然后将表达式最后的值提供给我们。
所以这个例子的理解方式是:将操作数1位置上带入具体数值,(2>3)?18:++18,意思就是说2>3不成立,所以现在需要执行操作数3,但是操作数3位置上是一个自增运算,所以自增结果为19,整个表达式结果就是19。
这个例子仍然可以用实际需求来带入:
一个人的年龄是18,他的生日是本月2号,程序判断当前日期,如果小于2号,就直接告诉我们这个人的年龄,如果大于2号,就让这个人的年龄自动长一岁,然后再告诉我们。
领取专属 10元无门槛券
私享最新 技术干货