[英]Conditional statement in C with nested 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
b. two
在这里,我不明白为什么它不打印two
,因为在给定的条件下, c
可以等于a
并且c
可以同时大于b
如果a
大于b
且c
不大于b
,则c
永远不能等于a
。
您可以分发条件:
one
将打印时a > b && c > b
。
当a > b && c <= b && c == a
时,将打印two
。 由于c == a
,这些条件等效于c > b && c <= b
,这永远不可能成立。
这是因为其他。 具体来说,要获取该子句,请使用a> b和c! 因此,由于c!> b,cb,则c!= a,因此无法打印“ 2”。
如果您以逻辑方式重写代码,则可以用另一种方式查看它:
a ≤ b
,则为“四个” a > b AND c > b
,则为“一个” a > b AND c ≤ b AND c = a
,则情况为“两个” a > b AND c ≤ b AND c ≠ a
,则为“三” 唯一可以重写的情况是第三个项目符号,因为使用c = a
您具有:
如果a> b AND c≤b AND c = a
从逻辑上讲等同于
如果a> b并且a≤b
对于a
和b
任何值都不是真的
您在第4行和第5行中使用过else。 您不能两次使用else语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.