0

関数 return ステートメントでこれを行うことができることがわかりました。

int f() {
    return 1;;;;;;;;;;;;;;;;;;;;;;;; // ...;;;
}

必要な数のセミコロンを追加できますが、上記ではコンパイラ エラーや実行時エラーは発生しません。これは、C++ のような厳格な言語から来た私を驚かせました。なぜ私がこれを行うことができるのか誰かが説明できますか? ただし、他のコンテキストでこれを行うことはできません。

int x = 1;;;; // error

では、なぜ私がこのようなことができるのか誰か教えてもらえますか?

4

2 に答える 2

2

K&R からの引用、式ステートメントには product がありますexpression-statement: expression;

式が欠落している場合、構築は null ステートメントと呼ばれます。多くの場合、ラベルを配置する反復ステートメントに空の本体を提供するために使用されます。

これは有効な言語構造であるため、コンパイラからの苦情はありません。

于 2012-10-14T00:29:08.167 に答える
1

それらは単なる空のステートメントです。

return 1;
; //do nothing
; //do nothing
//etc

あなたが見ている違いは、それint x = 0;;;;;がグローバルスコープにあるということでしょう。関数定義の後に余分なセミコロンがあるようなものです。関数に移動int x = 0;;;;すると、文句はありません。

于 2012-10-14T00:22:47.703 に答える