您的位置首页生活百科

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

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

的有关信息介绍如下:

问题补充说明:#includeint main(){float a;int b;scanf("%f,%d",&a,&b);if(a==1||a==2&&b==3||b==4) //这里为什么我输入1,23132后……照样输出了 // good?这里的执行顺序到底是怎么样 //的?麻烦大家说清楚点 printf("good!");else printf("bad"); system("pause"); }

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

||逻辑或运算,在“||”运算符的表达式中,执行顺序是从左到右。如果其中有一个子表达式为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,所以照样输出了