回答編集履歴

1

コメントにあった質問への回答を追記

2016/12/16 14:31

投稿

archiver
archiver

スコア1557

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文の後にいくら処理を書いても、その処理は実行されません。今回の場合で言うと、秒への換算処理が行われないことになってしまいます。