关系运算符只能表示变量间的简单关系,对于一些比较复杂的关系,比如0≤x≤100,则需要逻辑运算符将几个不同的关系组合起来,形成较为复杂的逻辑表达式。逻辑运算符有以下几种,如表4-4所示。
表4-4 逻辑运算符
不同操作数的逻辑运算结果如表4-5所示。
表4-5 逻辑运算结果表
逻辑运算符通常和关系运算符组成比较复杂的逻辑表达式,这种关系表达式或逻辑表达式在程序中通常作为程序的判断条件,因此也称为条件表达式。
如0≤x≤100可以写成:
例如:三角形的三条边a、b、c,当其中任意两条边之和都大于第三边时,则a,b,c可以组成一个三角形,其表达式为(a+b>c)&&(a+c>b)&&(b+c>a)。
【例4-4】输出条件表达式的结果。
程序运行结果:(www.daowen.com)
程序中的条件表达式通过的“&&”运算符,表示只有三个关系表达式a+b>c、a+c>b和b+c>a同时都为true,结果才为true。
下面介绍关于&&和&,‖和|的短路问题。
“&&”和“&”,“‖”和“|”的功能是相同的,但在运算过程中有差别,其中“&&”和“‖”具有“短路”功能。所谓的短路功能,是指只有在需要时才计算运算符右边的值。如x&&y,当x的值为false时,就可以知道表达式的结果为false,因此右边的表达式y就不再计算,这就称为“短路”。而“&”运算符不管是什么样的结果,都会对两边的x和y进行计算,然后再得到返回值。如表达式(5>7)&&(13>2),因为“5>7”不成立,结果为false,所以表达式(5>7)&&(13>2)显然不会成立,因此不再对“13>2”进行比较运算。如果使用“&”运算符,则右边的“13>2”还要进行比较计算。
一般情况下,“&&”与“&”返回的结果是一样的,但有可能对一些结果有影响。如:
由于y<10不成立,结果为false,第二个表达式x++<5的结果不影响整个表达式的值,由于&&的短路功能,右边的表达式不进行计算,因此x++操作没进行,所以x的值不变,保持为5。但是如果表达式换成:
虽然y<10不成立,但由于&不具备短路功能,右边的表达式运算仍然要进行,x++操作被完成,这时x的值加1,发生了变化。因此,用“&&”和“&”会对运算结果产生不同的影响。
“‖”与“|”也类似。“‖”也具有短路功能。对于“‖”,如果左边的值为true,则返回值一定是true,因此右边的表达式就不用计算了,而“|”则不管左边表达式的结果是什么值,都要全部完成运算符左、右两边的值的计算,然后再给出结果值。
【例4-5】&&与&运算的区别。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。