猿问

我刚学嵌套if 编了一个 不知道为什么输出总是一个结果

#include<stdio.h>

void main()

{

int high;

int old;

printf("%s\n","请输入年龄与身高!");

scanf("%d,%d\n",&old,&high);

if(12<=old<=18) 

{

if(high>=185)

{

       printf("%s\n","你将是一个有潜力的运动员"); 

}

     else

{

       printf("%s\n","你不太适合当运动员");


}

}

else

printf("%s\n","你年龄不合适");

}


qq_朋擦擦_0
浏览 1319回答 1
1回答

onemoo

第一个if中的判断表达式你写的是 12<=old<=18因为关系运算符<=是左结合的,所以C语言是这样解释它的: (12 <= old) <= 1812 <= old 的结果是布尔值true or false,这个布尔值会被当作下一个比较运算的操作数,因此会被转换为整型来和18做比较,true会被转换为整型1,false会被转换为整型0。所以不管前面的结果是true还是false,整个表达式的结果都为真(1和0都小于18)。 也就是说这样写表达式并不能起到区间判断的作用!正确的写法是用逻辑与运算符将两个比较连起来: 12 <= old && old <= 18
随时随地看视频慕课网APP
我要回答