2016-07-07 48 views
0

在作爲翻譯部分的case語句中添加分號是否有任何意義?我發現翻譯過程像預期的那樣工作,猜測分號被解釋爲一個空的陳述。但是有沒有分號的優點/缺點?是否有建議的某種最佳做法?在下面的javascript示例中,請參閱第一個case語句中的分號。在開關盒語句的翻譯中使用分號

switch(a) { 
     case 2:; 
     case 3: alert('hello'); break; 
     default: alert('default hello'); 
    } 

我也有興趣瞭解C,C++和Java中與上述相關的最佳實踐。我還看到一些C#拋出編譯錯誤的文檔,如果fall-through的case語句部分有語句。像上面這樣的空語句會在C#中觸發一個錯誤嗎?

+1

我從來沒有見過它。看到沒有意義。 –

+3

五種語言問題!,除了奇怪的「C」或「C++」代碼使用如此寬的字符常量。 – chux

+0

您不需要Java中的分號,它只會落在 –

回答

2

不,它沒有任何區別。

我認爲,我建議你不要使用它,因爲它會使代碼不那麼清晰。

雖然在C#中是一個錯誤。 D也不允許;作爲一個空的陳述,您必須使用{}

-1

在語法上是相同的

它勢必混淆有人雖然所以我建議不要使用它

1

最佳實踐

通常不使用空語句。

像上面這樣的空語句會觸發C#中的錯誤嗎?

是的。

1

;在C,C++和Java中對你沒有任何幫助。如果你不需要它,不要使用它。但是,如果您正在實施Duff's Device或變體,並且讓他們「落下」或「沒有中斷」的評論,請確保將未來的代碼閱讀器變成骨骼。

在C#

switch(a) { 
    case 2:; 
    case 3: Console.WriteLine("hello"); break; 
    default: Console.WriteLine("default hello"); 
} 

通過中斷下落通過C#中的點點確實允許防止情況2和3執行相同的代碼。

switch(a) { 
    case 2: 
    case 3: Console.WriteLine("hello"); break; 
    default: Console.WriteLine("default hello"); break; 
} 

對於情況2和3執行相同的代碼有效。