回答編集履歴

2

ご指摘を受けての修正

2021/09/23 05:46

投稿

BeatStar
BeatStar

スコア4962

test CHANGED
@@ -54,7 +54,9 @@
54
54
 
55
55
 
56
56
 
57
- ……えーっと、とりあえず「C言語 for文」とかで検索してみてください。
57
+ ……えーっと、とりあえず「C言語 if文」とかで検索してみてください。
58
+
59
+ (修正: なぜかfor文になってた…)
58
60
 
59
61
 
60
62
 
@@ -62,7 +64,25 @@
62
64
 
63
65
 
64
66
 
65
- "{}"を省略すると**一行が対象になる**のです。
67
+ ~~"{}"を省略すると**一行が対象になる**のです。~~
68
+
69
+
70
+
71
+ 他の方の回答のコメント部にある[リンク先](https://teratail.com/questions/360649)には、
72
+
73
+
74
+
75
+ > そもそも{}は複文を書くための手段なのであって,それが無い状態が「省略形」なのではない.
76
+
77
+
78
+
79
+ と書かれていますね。(発想が逆だったらしい)
80
+
81
+
82
+
83
+ (打消し文での)「一行」が紛らわしいとご指摘があったので、ここも修正します。
84
+
85
+ 一行というよりは**1ステートメント**ってところでしょうか。
66
86
 
67
87
 
68
88
 
@@ -210,6 +230,10 @@
210
230
 
211
231
 
212
232
 
233
+ インデントっていうか、それっぽく見えただけでは?
234
+
235
+
236
+
213
237
  その動画は見ていませんが、おそらく、コンパイルはしていないのでは? (動画内で)
214
238
 
215
239
  その手の動画を見るのなら、**ざっくりと見る**か、**コンパイル(ビルド)しているのも含まれている前提**ですね。私なら。

1

追記1

2021/09/23 05:46

投稿

BeatStar
BeatStar

スコア4962

test CHANGED
@@ -165,3 +165,85 @@
165
165
  私なら、(2), (3) も (1)の対象範囲として"{}" の**中に**書くか、
166
166
 
167
167
  別途、変数を用意して、**if文の外に置いて**使う。
168
+
169
+
170
+
171
+ ---------------
172
+
173
+
174
+
175
+ [追記1]
176
+
177
+
178
+
179
+ > 失礼ですが、「参考に」というのが誤解を生んでしまいました、参考というよりかは、実際の作り方を見てこの場合はこうやる、この関数を使うと何々ができる、というのを学ぶのがが目的でした。
180
+
181
+ 基礎はできています。
182
+
183
+
184
+
185
+ あ、そっちですか。それなら上での発言は言い過ぎましたね。
186
+
187
+ 初心者~中級者ぐらいの人はそういう勉強方法もありっちゃアリですが、やっぱり良くないと思います。
188
+
189
+
190
+
191
+ 関数とかの使い方とかは**公式リファレンス**を参考にすべきです。
192
+
193
+ とはいえ、C言語やC++の公式リファレンスってのは無いようなので、有志が作ったものになりますが。
194
+
195
+ たとえば [cppjp](https://cpprefjp.github.io/)とかがありますね。
196
+
197
+
198
+
199
+
200
+
201
+ > for文の後ろに{}をつけるのは常識だと思っていました。
202
+
203
+
204
+
205
+ 常識っていうか、これがデフォです。一行だけの場合、ブロックを明示しなくてもわかるので、省略がされがちなだけです。
206
+
207
+
208
+
209
+ > ですが、その動画ではfor文に{}を付けずにPythonのようにインデントでやっていました。
210
+
211
+
212
+
213
+ その動画は見ていませんが、おそらく、コンパイルはしていないのでは? (動画内で)
214
+
215
+ その手の動画を見るのなら、**ざっくりと見る**か、**コンパイル(ビルド)しているのも含まれている前提**ですね。私なら。
216
+
217
+
218
+
219
+ > if文も、命令文が一つならインデントでできますが今回の場合、命令文が1つ以上なのに{}を付けなかったのが原因ですよね。
220
+
221
+ つまり、BeatStarさんの{}を省略して書くと・・・の場合、tempの定義はできますがあとの2つは
222
+
223
+ スコープ外になってエラーになるということですね。
224
+
225
+
226
+
227
+ YES. 一応、
228
+
229
+
230
+
231
+ ```
232
+
233
+ int a = 1;
234
+
235
+
236
+
237
+ int tmp = 2;
238
+
239
+ if( a == 1 ) tmp = 10;
240
+
241
+
242
+
243
+ int b = a * tmp;
244
+
245
+ ```
246
+
247
+
248
+
249
+ とかみたいな感じで**ブロックの外に**変数宣言を出して……であれば可能です。