回答編集履歴
1
コメントにあった質問への回答を追記
answer
CHANGED
@@ -17,4 +17,16 @@
|
|
17
17
|
```
|
18
18
|
質問者さんとの違いは第3パラメータのところです。そして、そこが**肝**です。
|
19
19
|
|
20
|
-
ついでに指摘。main関数でfunc内で計算したbyoの値を表示させようとしていますが、これはできません。それは**変数のスコープ**が違うからです(スコープも調べてみてください)。
|
20
|
+
ついでに指摘。main関数でfunc内で計算したbyoの値を表示させようとしていますが、これはできません。それは**変数のスコープ**が違うからです(スコープも調べてみてください)。
|
21
|
+
|
22
|
+
---
|
23
|
+
|
24
|
+
###コメントの質問に対する回答
|
25
|
+
> 今回は0や-1で返すというのがわからないです
|
26
|
+
|
27
|
+
一言で言えば、そういう**仕様**(処理としてやるべきことと決められていること)になっているからです。課題について振り返ってみましょう。今回、関数の戻り値として「分または秒が0~60の範囲外であれば-1を、そうでなければ0を返す」ように決められています。これが**仕様**で、関数の処理としてやらなければならないこと(の一つ)になります。
|
28
|
+
今回の質問者さんのプログラムでは、分または秒がエラーとなる場合、NGを関数の戻りとして返すようになっています。エラーとして返すのですから、ここでは``-1``を返すようにしなければなりませんよね。なので、``NG``のデファイン値は``-1``でなければならないのです。
|
29
|
+
|
30
|
+
> return文を実行したところで、なぜ抜けてしまうのですか。
|
31
|
+
|
32
|
+
``return``文は関数の処理を抜ける(呼び元へ戻る)ための命令文です。そのため、``return``文が呼ばれた時点で、その関数の処理は終了し、呼び元(今回の場合はmain関数)へと戻ります。関数から抜けてしまいますので、return文の後にいくら処理を書いても、その処理は実行されません。今回の場合で言うと、秒への換算処理が行われないことになってしまいます。
|