teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2020/08/29 02:55

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -4,10 +4,20 @@
4
4
 
5
5
  **複文**の定義は、単体の`{`と`}`、もしくは、`{`+「ブロック内要素(複数可)」+`}` である。と定められています。
6
6
 
7
- つまり、`;`は、その文が式文であることを示すためのものであって、全ての文の終わりにつくわけではありません。
7
+ つまり、`;`は、その文が式文(もしくは他の`;`終わるタイプの文)であることを示すためのものであって、全ての文の終わりに必ずつくわけではありません。
8
8
 
9
- `~~;` と `{~~;}` は共に等価の「文」であるという事です。
9
+ `~~;` と `{~~}` は共に等価の「文」であるという事です。
10
10
  なので、ブロックの終わりには、`;`を付ける必要がありません。
11
11
 
12
12
  もし、`{~~};`と書いた場合、それは、`{~~}`と`;`の二つの文があるとみなされます。
13
- (単体の`;`も一つの文になるので)
13
+ (単体の`;`も一つの文になるので)
14
+
15
+ if文自体も、名前にそう付いているように1つの文です。
16
+ if文の定義は、こうなっています
17
+ `if`+`(`+式+`)`+文
18
+ もしくは
19
+ `if`+`(`+式+`)`+文+`else`+文
20
+
21
+ この定義から分かるように、if文自体の終わりには`;`は必須ではありません。
22
+ つまり、ifの最後についている、`;`は、if文の一部というより、if文の中の最後の文の一部です。
23
+ なので、最後に書かれている「文」の内容次第で、終わりが、`;`にも`}`にもなります。

1

追加

2020/08/29 02:55

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -7,4 +7,7 @@
7
7
  つまり、`;`は、その文が式文であることを示すためのものであって、全ての文の終わりにつくわけではありません。
8
8
 
9
9
  `~~;` と `{~~;}` は共に等価の「文」であるという事です。
10
- なので、ブロックの終わりには、`;`を付ける必要がありません。
10
+ なので、ブロックの終わりには、`;`を付ける必要がありません。
11
+
12
+ もし、`{~~};`と書いた場合、それは、`{~~}`と`;`の二つの文があるとみなされます。
13
+ (単体の`;`も一つの文になるので)