簡體   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