在这一节课当中,我们来讲解一下,剩余的一些基础运算符的用法。很多的运算符,需要结合着后面我们即将学到的复杂一些的知识点,这样才能有更深入的理解。所以,我们此时先讲解简单一些的,也是比较典型一些的运算符。
首先,我们来看一下:关系运算符:“大于”、“小于”、“相等”、“大于或者等于”、“小于或者等于”、“不相等”。
这些运算符,我们在学数学的时候,已经学过了,只是在C语言中,这其中有几个运算符的写法和数学中的不同。
比如:“相等”,在C语言中,使用两个等号(==)来表示。如果是一个等号(=),在C语言中表示“赋值”。再比如:“大于或者等于”,在C语言中这样来写:“>=”;“小于或者等于”,在C语言中这样写:“<=”;再比如:“不相等”,在C语言中的写法是这样:“!=”,一个“感叹号”连接一个“等号”。
我们来用一段程序,来看一下这些关系运算符的使用方法:
关系运算符举例
上述这段程序,还是很好理解的。关于关系运算符,我们暂时先讲解到这里,在后面的课程中,再结合着具体的实例,加深对于“关系运算符”的理解。
接下来,我们来看一下“条件运算符”,也称之为“三目运算符”这个运算符是这样的:(?:),一个“问号”,和一个“冒号”,这样组合起来,可以起到实现if...else语句的一些效果,但是无法取代if...else语句,只是在某些时候,使用三目运算符,程序写起来方便一些。
我们来看下面这段代码:
三目运算符
在上述程序的第7行,大概含义是这样:如果变量num1的值大于num2的值,那么就将num1的值赋值给变量num3,否则就将num2的值赋值给num3
如果使用“if...else”的写法,就会写成下面这种形式:
if...else写法形式
上述这段程序,使用“if...else”的形式,来描述了第二部分那段“三目运算符”的程序了。两者之间所表达的含义是相同的,但是可以看出来,在这个场景中,使用“三目运算符”来写的话,程序更加简洁一些了。
接下来,我们来讲解一下C语言中的“逻辑运算符”了,也是我们这节课的重点。
逻辑运算符有三种:逻辑与(&&)、逻辑或(||)、逻辑非(!)
(1)对于“与”来讲
“真”&&“真”的结果为:真
“真”&&“假”的结果为:假
“假”&&“假”的结果为:假
(2)对于“或”来讲
“真”||“真”的结果为:真
“真”||“假”的结果为:真
“假”||“假”的结果为:假
(3)对于“非”来讲
“!真”的结果为:假
“!假”的结果为:真
在C语言中,“0”为“假”,其他数字都为“真”。我们来看如下这段程序:
逻辑运算符
上述这段程序,我们来大致分析一下:
在第7行,“变量num1的值小于num2的值,并且变量num2的值小于num3的值”,这个情况是成立的。
在第12行,“变量num1的值大于num2的值,或上数字0”,这个情况条件是不成立的
在第17行,“将变量num1的值,进行‘逻辑非’运算”,结果是“假”。因为num1的值为10,除了0其它都为“真”,所以“!真”的结果为“假”。所以,最终程序的运行效果如下所示:
程序运行结果
接下来,我们来看一下逻辑运算符的“短路特性”:
我们来看下面这段程序:
逻辑运算符的“短路特性”
上述程序中,在第9行,首先,“变量num1的值大于num2的值”这个条件不成立,因为num1的值为10,num2的值为20。运算符(&&)前面的条件语句不成立,后面的“res2 = 1”这条语句也就不会去执行了,最终变量res1的值为“0”,变量“res2”的值也为“0”,因为“res2 = 1”没有被执行到。
在第11行,首先,“变量num1的值大于num2的值”虽然不成立,但是此处使用的是“条件或(||)”来运算,所以会继续往后执行“res4 = 1”这个表达式,最终,变量res3的值为“0”,变量res4的值为“1”。
这段程序的第9行就体现出了逻辑运算符的“短路特性”了。当“num1 > num2”这个条件不成立的时候,整个表达式的结局就已经确定为“假”了,所以就没有必要去执行后面的“res2 = 1”这个表达式了。
在一些考试题中,会出现“逻辑运算符短路特性”的这样的题型,只要我们对于“短路特性”有了一定的了解,再遇到这样的题目的时候,就不容易出错了。
关于“运算符”这块,我们通过上一节课和这一节课,讲解到了一些基础的部分。至于其它的一些运算符,我们到后面的章节中,结合着具体复杂一些的知识点,再一起结合进去进行讲解。
下一节课,我们将进入“流程控制”这部分的知识讲解了。也就是我们的课程进入了一个新的阶段了。
今天我们就暂时先学到这里,我们下一节课再见!