セミコロンで終了する必要のないステートメントに関するルールはありますか?
3 に答える
ブロック ステートメントの後にセミコロンを付ける必要はありません。これが、このコードで右中括弧の後にセミコロンを付ける必要がない理由です。
while (true) {
cout << "Hi!" << endl;
}
ステートメントとして機能する式には、その後にセミコロンが必要です。これが、cout
上記の行がセミコロンで終了する理由です。
制御ステートメント ( if
、do
、while
、switch
など) の後にセミコロンを付ける必要はありdo ... while
ません。ただし、それらが制御するステートメントがセミコロンで終わる場合は、ステートメント全体がセミコロンになります。例えば:
while (true) cout << "Are we there yet?" << endl;
制御cout
ステートメントはセミコロンで終わるため、セミコロンで終わります。
break
、continue
、goto
、return
などの制御フローを変更するステートメントには、throw
後にセミコロンを付ける必要があります。
関数プロトタイプ、変数宣言、および構造体/クラス/共用体宣言などの宣言ステートメントは、セミコロンで終了する必要があります。
ステートメントの種類とその構文の完全なリストについては、C++ ISO 標準の §6 を参照してください。このセクションでは、これらのステートメントの種類ごとの文法について説明しています。これが、このリストをコンパイルする方法です。
お役に立てれば!
はい、C++ 標準のセクション 6「ステートメント」でカバーされています (C++03 のセクション 6、C++11 で変更された可能性がありますが、現時点ではアクセスできません)。
ステートメントの種類は多数ありますが、すべてを終了する必要はありません。たとえば、次if
は選択ステートメントです。
if (i == 1) {
doSomething();
}
セミコロンで終了する必要はありません。
対象となるさまざまなステートメントのうち、要件は次のとおりです。
Statement type Termination required?
============== =====================
labelled statement N (a)
expression Y
compound statements N (a)
selection statements N (a)
iteration statements N (a) (b)
jump statements Y
declaration statement Y
(a)セミコロンで終わっているように見えることがありますが、そうではありません。ステートメント:
if (i == 1) doSomething();
には、複合ステートメントではなく、内側の式ステートメントを終了するセミコロンがあります。これは、中{}
括弧内にある上記の最初のコード セグメントを調べると明らかなはずです。
(b)式do
の後にセミコロンが必要while
です。
MACRO 定義も必要ありません。
ブラケットが開いて閉じた後のすべてのキーワード (if、else、for、while、do、main など) は、前述のようにセミコロンを必要としません。
3. void、int、string、long などの識別子の後には、セミコロンは必要ありません。
4.関数は、定義が来るときもセミコロンを必要としません。
void fun(){.......} など