C语言IF语句条件判断失效求解:需判断两数符合范围且和为5
问题根源
你写的条件里(number_one > 10)和(number_two < -10)都是C语言的关系判断表达式,这类表达式的运行结果只有两种:条件成立时返回1(真),不成立时返回0(假)。所以两个结果相加的最大值只能是1+1=2,永远不可能等于5,加了==5之后条件永远不成立,自然不会触发执行逻辑。
你之前去掉==5可以触发,是因为两个条件都满足时相加结果为2,C语言中非0的数值都会被判定为“真”,所以if会执行,但此时并没有校验“两个数相加等于5”的逻辑。
修复方案
你需要同时满足三个条件,直接用逻辑与运算符&&连接三个判断即可,&&的规则是左右两边的条件全部成立时,整体结果才为真,完全匹配你的需求,没有用到你未掌握的语法:
// 三个条件同时满足才会执行printf if (number_one > 10 && number_two < -10 && (number_one + number_two) == 5) { printf("%d + %d = five", number_one, number_two); }
这里给number_one + number_two加括号是为了避免优先级问题,保证先计算两个数的和再判断是否等于5。
内容的提问来源于stack exchange,提问作者Steven Nguyen
相关产品推荐
相关产品推荐

