c - C中带有嵌套if else else if的条件语句
问题描述
在书中找到了这段代码:
if(a > b)
if(c > b) printf("one");
else if(c == a) printf("two");
else printf("three");
else printf("four");
问题是:
程序永远不会打印
a. one
b. two
c. three
d. four
正确答案在b. two
这里,我不明白为什么它不会打印two
,因为在给定的条件下,c
可以等于a
并且可以同时c
大于b
解决方案
如果a
大于b
,c
且不大于b
,c
则永远不能等于a
。
您可以分发条件:
one
将在a > b && c > b
.
two
将在a > b && c <= b && c == a
. 因为c == a
,这些条件等价于c > b && c <= b
,它永远不会为真。
推荐阅读
- permutation - dafny 断言失败很难解释
- javascript - 运行测试“找不到模块”时出错
- angular - 如何在Angular中读取复选框值
- regex - 删除非 ASCII 但不是一个特定字符
- tcl - 将变量值声明为数组以及如何访问该值
- python - 为什么更改.format中的变量后,字符串格式的全局变量保持不变?
- angular - Angular 7 html 中的 206 部分内容 mp4
- javascript - 如何使用 Node.js 在 MongoDB 中对月份进行分组并按年份过滤?
- sql-server - 删除后重用(Null/Nothing/Empty)员工ID
- c# - 在使用 asp.net 的 GridView 中显示名称而不是 Id,其值存在于不同的表中