可能重複:
In C/C++ why does the do while(expression); need a semi colon?爲什麼「儘管」最後需要分號? (C/C++ /爪哇/等)
我明白了 「做while」 循環的結構相比, 「while」 循環。我不明白,是爲什麼語言要求的語法如下:
do{ statements(); } while(condition);
是這是絕對必要的語言有一個分號然後結束這個表情?或者這是更容易編寫一個編譯器?
可能重複:
In C/C++ why does the do while(expression); need a semi colon?爲什麼「儘管」最後需要分號? (C/C++ /爪哇/等)
我明白了 「做while」 循環的結構相比, 「while」 循環。我不明白,是爲什麼語言要求的語法如下:
do{ statements(); } while(condition);
是這是絕對必要的語言有一個分號然後結束這個表情?或者這是更容易編寫一個編譯器?
由於}
不是結束,所以它有助於以某種方式知道已達到聲明的結尾,因此是分號。
可以在沒有它的情況下編寫一種語言,但在這些語言中使用語言更有意義。
這是一個僞參數。它如何更有意義?這就是問題 - 它也不能成爲答案。 – 2011-04-12 23:44:29
@用戶未知:您也不能在第一段中錯過回答參數。這不可能。這不會更有意義。這是答案。 – sehe 2011-04-12 23:58:44
幫助誰?編譯器?如果我省略了分號,編譯器會讓我感到不快,我應該在那裏放一個分號,並且確切地知道它在哪裏放。所以他可以自己把它放在那裏,推斷它,它可以是可選的。你需要分號嗎? – 2011-04-13 00:27:23
至少在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
所以我想這是symetry的原因 - 也許它更容易以這種方式編寫解析器。
糟糕,我在搜索時沒有看到這個問題。 – eternalmatt 2011-04-12 23:46:17
請注意,重複問題的接受答案是錯誤的。 @ AndreyT的回答是正確的。 – caf 2011-04-13 02:52:12