スポーツの秋ですね。スポーツをする目的には、記録を伸ばす「もっと速く」や、ダイエットをする「もっと軽く」があるでしょう。これと似たことが、プログラミングにもあるのをご存じですか。それは、コンパイラの最適化です。コンパイル時に最適化を指定すると、ソースコードの無駄な部分が取り除かれて、「より速いプログラム」や「より小さいプログラム」が生成されます。

 今回は、コンパイラの最適化に関するクイズを出題します。明らかに無駄があるC言語のソースコードを示しますので、それが、コンパイラによって、どのように最適化されるかを考えてください。問題は、全部で8問あります。どれも、シンプルなプログラムなので、C言語の構文を詳しく知らなくても、内容を理解できると思います。ぜひチャレンジしてください。

【問題1】はじめは「最適化とは何か」を知っていただくためのやさしい問題です

 以下は、引数aの2乗を返す関数funcです。ans = a * a; という同じ処理を3回も行うのは無駄なことです。最適化を指定してコンパイルすると、AとBどちらの処理を行うプログラムが生成されるでしょう?

[画像のクリックで拡大表示]
[画像のクリックで拡大表示]