#include <iostream>
使用 命名空間 std.com.cn>。
int main()
{
int a = 1;
int b = 2;
if(a > 0)
{
cout << "我們在第一個" << endl。
if(b > 3)
{
cout << "我們在第二個" << endl;
}
}
else
{
cout << "我們在別的地方" << endl;
}
}
根據C ISO的規定:
在第二種形式的if陳述句(包括else)中,如果第一個子句也是一個if陳述句,那么這個內部的if陳述句也是一個if陳述句。 第一個子句也是一個if陳述句,那么這個內部if 陳述句應包含一個else部分。換句話說,else 與最近的非elsed if相關聯。
我認為我上面的代碼會列印出 "我們在else中",因為最接近的非elsed if的條件,即內部的,結果是false。我錯過了什么?
uj5u.com熱心網友回復:
標準在這里談到了沒有塊狀陳述句。在像這樣的情況下:
if (a > 0)
if (b > 3) std::cout << "嵌套-if
"。
else std::cout << "nested-else
"。
else是嵌套的if的一部分。這種東西在標準中必須是不含糊的,但我強烈建議在各種情況下使用塊狀陳述句(用{}包裹)以防止混淆。
uj5u.com熱心網友回復:
當他們說 "最近",那么他們指的是與整個if 陳述句的距離,而不僅僅是if關鍵字。整個if陳述句是:
if (a>0){
cout<<"我們在第一個"<<endl。
if (b>3){cout<<"我們在第二"<<endl;}。
它在}處結束。}關閉了外部的if塊,這就是關閉了if的else。
請看這里對if陳述句的正式解釋,它不僅僅由if組成。https://en.cppreference.com/w/cpp/language/if。
uj5u.com熱心網友回復:
背景關系。你所遺漏的部分是背景關系。
每當你打開一個{}對,你就引入了一個新的背景關系,所以外部的else只 "知道 "第一個if。
新背景關系中的 if 可以有它自己的 else。如果你希望 else 的行為與最后一個 if 有關,你就不應該創建一個新的背景關系。
例如:
if (someVar == true)
if (someOtherVar == true)
cout << "一些文本" << endl;
else
cout << "其他一些文本" << endl;
else
cout << "另一個完全不同的文本" << endl;
uj5u.com熱心網友回復:
你的代碼 -
int a =1;
int b =2;
if (a>0)
{
cout<<"我們在第一個"<<endl。
if (b>3){cout<<"我們在第二個"<<endl;}。
}
else[/span
{
cout<<"我們在別的地方"<<endl。
}
邏輯路徑 -
int a =1;
int b =2;
if (1> 0)
{
cout<<"我們在第一個"<<endl。
if (b>3){cout<<"我們在第二個"<<endl;}。
}
else[/span
{
cout<<"我們在別的地方"<<endl。
}
int a =1;
int b =2;
cout<<"我們在第一個"<<endl。
if (b>3){cout<<"我們在第二個"<<endl;}。
我們在else中沒有被執行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/314496.html
標籤:
