3

セミコロンで終了する必要のないステートメントに関するルールはありますか?

4

3 に答える 3

3

ブロック ステートメントの後にセミコロンを付ける必要はありません。これが、このコードで右中括弧の後にセミコロンを付ける必要がない理由です。

while (true) {
    cout << "Hi!" << endl;
}

ステートメントとして機能する式には、その後にセミコロンが必要です。これが、cout上記の行がセミコロンで終了する理由です。

制御ステートメント ( ifdowhileswitchなど) の後にセミコロンを付ける必要はありdo ... whileません。ただし、それらが制御するステートメントがセミコロンで終わる場合は、ステートメント全体がセミコロンになります。例えば:

while (true) cout << "Are we there yet?" << endl;

制御coutステートメントはセミコロンで終わるため、セミコロンで終わります。

breakcontinuegotoreturnなどの制御フローを変更するステートメントには、throw後にセミコロンを付ける必要があります。

関数プロトタイプ、変数宣言、および構造体/クラス/共用体宣言などの宣言ステートメントは、セミコロンで終了する必要があります。

ステートメントの種類とその構文の完全なリストについては、C++ ISO 標準の §6 を参照してください。このセクションでは、これらのステートメントの種類ごとの文法について説明しています。これが、このリストをコンパイルする方法です。

お役に立てれば!

于 2012-06-15T01:00:11.733 に答える
3

はい、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です。

于 2012-06-15T01:02:28.677 に答える
1
  1. MACRO 定義も必要ありません。

  2. ブラケットが開いて閉じた後のすべてのキーワード (if、else、for、while、do、main など) は、前述のようにセミコロンを必要としません。

3. void、int、string、long などの識別子の後には、セミコロンは必要ありません。

4.関数は、定義が来るときもセミコロンを必要としません。

void fun(){.......} など

于 2012-06-15T04:05:40.553 に答える