[英]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.