回答編集履歴
1
コメントにあった質問への回答を追記
test
CHANGED
@@ -37,3 +37,27 @@
|
|
37
37
|
|
38
38
|
|
39
39
|
ついでに指摘。main関数でfunc内で計算したbyoの値を表示させようとしていますが、これはできません。それは**変数のスコープ**が違うからです(スコープも調べてみてください)。
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
---
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
###コメントの質問に対する回答
|
48
|
+
|
49
|
+
> 今回は0や-1で返すというのがわからないです
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
一言で言えば、そういう**仕様**(処理としてやるべきことと決められていること)になっているからです。課題について振り返ってみましょう。今回、関数の戻り値として「分または秒が0~60の範囲外であれば-1を、そうでなければ0を返す」ように決められています。これが**仕様**で、関数の処理としてやらなければならないこと(の一つ)になります。
|
54
|
+
|
55
|
+
今回の質問者さんのプログラムでは、分または秒がエラーとなる場合、NGを関数の戻りとして返すようになっています。エラーとして返すのですから、ここでは``-1``を返すようにしなければなりませんよね。なので、``NG``のデファイン値は``-1``でなければならないのです。
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
> return文を実行したところで、なぜ抜けてしまうのですか。
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
``return``文は関数の処理を抜ける(呼び元へ戻る)ための命令文です。そのため、``return``文が呼ばれた時点で、その関数の処理は終了し、呼び元(今回の場合はmain関数)へと戻ります。関数から抜けてしまいますので、return文の後にいくら処理を書いても、その処理は実行されません。今回の場合で言うと、秒への換算処理が行われないことになってしまいます。
|