为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
qq_朋擦擦_0 2015-11-12 22:53:37
#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","你不太适合当运动员"); }}elseprintf("%s\n","你年龄不合适");}
查看完整描述

1 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

第一个if中的判断表达式你写的是 12<=old<=18

因为关系运算符<=是左结合的,所以C语言是这样解释它的: (12 <= old) <= 18

12 <= old 的结果是布尔值true or false,这个布尔值会被当作下一个比较运算的操作数,因此会被转换为整型来和18做比较,true会被转换为整型1,false会被转换为整型0。所以不管前面的结果是true还是false,整个表达式的结果都为真(1和0都小于18)。 也就是说这样写表达式并不能起到区间判断的作用!

正确的写法是用逻辑与运算符将两个比较连起来: 12 <= old && old <= 18

查看完整回答
反对 回复 2015-11-12
  • 1 回答
  • 1 关注
  • 1318 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信