2011年10月14日金曜日

宿題の解答

私の部屋の前には、オープンキャンパスのときに使う掲示物を貼る案内板がおいてあります。今日仕事に来たら、そこに宿題が貼ってありました。どなたか存じませんが、答えておきましたので、 取りに来てください。

普段の状態問題が貼られている様子答えを追加した様子


ちょっと心当たりを探したら、貼った人が分かりました。大学院生が1年生の課題の採点をしていて「プログラムは間違っているのに、答えはちゃんと出ている。何故だ?」となったようです。
# 実力を試されているのか!、と深読みもしていたので、ほっとしました (^_^)。

問題に興味のある人は以下を見てください。
抜粋すると、以下のプログラムで、mul関数はreturnしていないのに、値がきちんと返ってくる、その理由は何故か?です。
Borland Cはコンパイルエラーがでます。Visual Studio 2008/2010での話です。


#include <stdio.h>

int mul(int);

int main(void) {
    int x, y;

    printf("x?");
    scanf("%d", &x);
    y = mul(x);
    printf("x*13=%d\n", y);
    return 0;
}

int mul(int x) {
    x = x * 13;
}

追記(2011-11-25):
この記事を見て、答えを質問してくる学生が多かったです。同様にtwitterでもつぶやかれ、仕組みを知りたそうでした。そのため、解説記事を載せましたリンク

0 件のコメント:

コメントを投稿