通常沒有大括號,我們定義一個陳述句,所以
我想問一下
if ( n > 0 )
if ( m > 0 )
printf("Condition satisfied.");
這是一個宣告還是
if ( n > 0 )
if ( m > 0 )
printf(" Condition satisfied.");
else
printf(" condition not satisfied. ");
所以我從上面的兩個代碼中問哪個是正確的代碼?并給出這個代碼
if(a > b)
if(b > c)
s1;
else s2;
s2 will be executed if
uj5u.com熱心網友回復:
在這樣的情況下:
if ( n > 0 )
if ( m > 0 )
printf(" Condition satisfied.");
else
printf(" condition not satisfied. ");
else最里面的對if。所以上面是一樣的:
if ( n > 0 ) {
if ( m > 0 ) {
printf(" Condition satisfied.");
} else {
printf(" condition not satisfied. ");
}
}
這種情況可能會令人困惑,因此除非您可以將整個陳述句干凈地放在一行上,否則請始終使用大括號來清楚地說明什么在哪里。
uj5u.com熱心網友回復:
本 C 教程解釋了 C 中的“懸掛 else”。它解釋了嵌套 if 陳述句中單個 else 陳述句的關聯。在嵌套的 if 陳述句中,當出現單個“else 子句”時,情況恰好是懸空的 else!例如:
if (condition)
if (condition)
if (condition)
else
printf("dangling else!\n"); /* dangling else, as to which if statement, else clause associates */
1. 在這種情況下,else 子句屬于最接近的 if 陳述句,它是最里面的 if 陳述句不完整! 2. 但是,我們可以通過將所有 if 陳述句包含在與 else 子句關聯的 if 陳述句的塊外部來使 else 子句屬于所需的 if 陳述句。例如:
if (condition) {
if (condition)
if (condition)
} else
printf("else associates with the outermost if statement!\n");
uj5u.com熱心網友回復:
當你寫類似的東西時
if(n > 0)
if(m > 0)
printf("Condition satisfied.\n");
else
printf("Condition not satisfied.\n");
那么,是的,您遇到了“懸空其他”問題。很難弄清楚哪個if是else。通過使用顯式大括號,您可以明確地將else與正確的if.
但是else,在這種情況下,將 s 與任何一個ifs!關聯都是不正確的!在這種情況下,我相信你會想這樣寫:
if(n > 0 && m > 0)
printf("Condition satisfied.\n");
else printf("Condition not satisfied.\n");
現在,它不僅更小更易于閱讀,不僅沒有懸空的 else 問題,而且您將始終獲得正確的結果,并列印一條或另一條訊息。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/475008.html
上一篇:未定義檢查變數時if陳述句出錯
