2014-09-19 72 views
1

出於好奇,我想知道爲什麼開關語句的縮進符合他們的樣子。我期望休息;應該寫在與案例相同的列上:就像我們在if語句中使用花括號一樣。開關語句縮進

那麼,爲什麼我們這樣做是這樣的:

case 1: 
    //do stuff 
    break; 

case 2: 
case 3: 
    //do stuff 
    break; 

,而不是像這樣:

case 1: 
    //do stuff 
break; 

case 2: 
case 3: 
    //do stuff 
break; 

回答

1

這兩種編寫switch語句的方法沒有區別。如果我想,我也可以寫這樣的開關語句

case 1: /*do stuff*/ break;case 3: case 2: /*do stuff*/ break; 

您添加的空格不會被編譯器讀取。 我們添加空格和縮進以使我們的代碼易於被其他人閱讀。

4個字:無塊,無縮進。

病例不打開塊。在C或C++中,您甚至可以在開關塊的開始處放置變量聲明(但不調用初始化程序,除靜態變量外,這是一個陷阱)。

因此,作爲案例只是標籤,縮進他們似乎並不直觀,縮進是大多數樣式選擇的樣式。

+1

我知道這一點,我的問題不是問題,但更多的是出於好奇,爲什麼縮進標準是這樣的。 因此,我的問題仍然存在,因爲如果($ i = 1){/ * do stuff * /} if($ i = 2){/ * do stuff * /} **您的示例可以轉換爲 ** ** if語句的中斷字符}被寫在與起始語句相同的列上,而switch語句不是這種情況。 – Tim 2014-09-19 12:09:05

+1

這些案例是邏輯標籤。許多人將標籤放在與他們所在的塊相同的縮進級別。在我看來,這樣可以更輕鬆地閱讀文本。 我將它與時間軸進行比較,您可以滾動瀏覽。時間線上有標記,而不是縮進內容。然後,您可以快速指出標籤/標記的位置,而不會將您的眼睛從基線移開。 我希望我能滿足你的好奇心。如果你想我們可以繼續談論這個,我很享受這一點。 – 2014-09-19 12:16:38

+0

非常感謝您的回答,標籤/時間表expample讓我思考。 我想** break; **應該被解釋爲一個本地** exit(); **或者** die(); **來退出開關程序,而不僅僅是這種情況。 – Tim 2014-09-19 12:25:33

0

恕我直言,第一個例子是更加清晰,可以看到每一種情況下沒有障礙。第二個例子比較困難,因爲在同一層次上有大小寫和中斷,所以你不能簡單地將塊分開。