繁体   English   中英

如果没有,则在C中嵌套的条件语句

[英]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大于bc不大于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

对于ab任何值都不是真的

您在第4行和第5行中使用过else。 您不能两次使用else语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM