为何出现不了Case 2中的情况?If和else咋没匹配上?
#include<stdio.h>
int main()
{
int a,b,sum1,sum2;
while(scanf("%d%d",&a,&b)!=EOF)
{
if(1<=a<=20&&1<=b<=20)
{ sum1=a+b;
printf("Case 1:\n");
printf("%d+%d=%d\n\n",a,b,sum1);}
else
{sum2=a+b;
printf("Case 2:\n");
printf("%d+%d=%d\n",a,b,sum2);}
}
return 0;
}
为何出现不了Case 2中的情况?If和else咋没匹配上?
[解决办法]
你判断a和b的范围的时候不可以用1<=a<=20的!!
应该用 (1<=a && 20>=a)
如果你写的是1<=a<=20,他会先计算1<=a得到一个布尔值,真或假,就是1或者0
1或者0都是小于20的,所以1<=a<=20一定是真的,所以
case 2肯定不会出现。
[解决办法]
单步调试一下就什么都清楚了。
[解决办法]
楼上正解,这与操作符的优先级顺序有关系,也与true和false对应的int值有关