2011-04-12 37 views
1

可能重複:
In C/C++ why does the do while(expression); need a semi colon?爲什麼「儘管」最後需要分號? (C/C++ /爪哇/等)

我明白了 「做while」 循環的結構相比, 「while」 循環。我不明白,是爲什麼語言要求的語法如下:

do{ 
    statements(); 
} while(condition); 

是這是絕對必要的語言有一個分號然後結束這個表情?或者這是更容易編寫一個編譯器?

+0

糟糕,我在搜索時沒有看到這個問題。 – eternalmatt 2011-04-12 23:46:17

+1

請注意,重複問題的接受答案是錯誤的。 @ AndreyT的回答是正確的。 – caf 2011-04-13 02:52:12

回答

1

由於}不是結束,所以它有助於以某種方式知道已達到聲明的結尾,因此是分號。

可以在沒有它的情況下編寫一種語言,但在這些語言中使用語言更有意義。

+0

這是一個僞參數。它如何更有意義?這就是問題 - 它也不能成爲答案。 – 2011-04-12 23:44:29

+0

@用戶未知:您也不能在第一段中錯過回答參數。這不可能。這不會更有意義。這是答案。 – sehe 2011-04-12 23:58:44

+0

幫助誰?編譯器?如果我省略了分號,編譯器會讓我感到不快,我應該在那裏放一個分號,並且確切地知道它在哪裏放。所以他可以自己把它放在那裏,推斷它,它可以是可選的。你需要分號嗎? – 2011-04-13 00:27:23

0

至少在Java中,你可以不寫:

} while (i < 10) && (j != 8); 

沒有得到這樣的errormessages:

NodeSorter.java:24: ';' expected 
     } while (i < 10) && (j != 8); 
         ^
NodeSorter.java:24: not a statement 
     } while (i < 10) && (j != 8); 
          ^
NodeSorter.java:24: ';' expected 
     } while (i < 10) && (j != 8); 
           ^
3 errors 

所以我想這是syme​​try的原因 - 也許它更容易以這種方式編寫解析器。