关于优先级||和&&的问题

2024-11-29 23:58:03
推荐回答(2个)
回答1:

||逻辑或运算,在“||”运算符的表达式中,执行顺序是从左到右。如果其中有一个子表达式为True,那么整个表达式的值就为True,而且在该子表达式后面的式子不必再计算。
&&逻辑与运算,在“&&”运算符的表达式中,执行顺序是从左到右。如果其中有一个为False,那么整个表达式的值就为False,而且在该子表达式后面的式子不必再计算。

另外运算符优先级&&高于||。

你的代码中if(a==1||a==2&&b==3||b==4)相当于if(a==1||(a==2&&b==3)||b==4),当输入1,23132后,a=1,b=23132,在if(a==1||a==2&&b==3||b==4)中第一个判别式a==1就为True,后面的不管结果是什么,整个表达式结果依然为True,所以照样输出了

回答2:

逻辑运算符优先次序为:
!(非)->&&(与)->||(或)

即,
a==1||a==2&&b==3||b==4 相当于
a==1||(a==2&&b==3)||b==4

因为a==1为真,则 a==1||(a==2&&b==3)||b==4 为真。
所以输出为Good