12この記事は2016年8月10日に書かれたものです。内容が古い可能性がありますのでご注意ください。環境についてC言語の練習問題です。開発環境は以下の通り。sjlj)※問題文に書いてあるプログラムを実行する際は自己責任で実行してください。※※各問題へのリンク一覧を作成しました。次のプログラムを作った。コンパイル、実行に関して以下の問いに答えよ。0;}問1.次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。A,B,Cの選択肢から適切なものを選べ。選んだ選択肢の中の空欄を埋めよ。コマンドを入力する前はディレクトリ内のファイルはtest12.cのみであった。-std=c89選択肢A,B,CA.コンパイル成功して(空欄1)が生成されるB.(空欄1)の部分でコンパイルエラーC.コマンドの(空欄1)の部分が間違っているためコンパイルが実行されない問2.その後、次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。A,B,Cの選択肢から適切なものを選べ。選んだ選択肢の空欄を埋めよ。test12A.ファイルが実行され(空欄1)と画面に表示される。問1,問2今回はfor文を使用している。問題になったのは以下の部分。i++){}この構文は、java等では問題が無い。c99準拠のプログラムであれば問題ない。今回はコンパイルオプションで-std=c89と指定しており、c89準拠でコンパイルを行っている。c89では、for文を書くのと同時にループカウンタを宣言することができない。そのため、該当箇所でコンパイルエラーが発生する。c89準拠では例えば以下のようにすればコンパイルできる。i++){}※1行目の宣言時の初期化はしなくても良いが、初期化せずに使用するとどんな値か不明であり危険。変数は使用前のタイミングで必ず初期化を行うこと。-O3は、最適化用のオプションで、このプログラムでは動作内容にほとんど影響がない。-stdオプションはコンパイラの準拠するC言語の規格を指定する。今回はc89準拠になるようにしている。他にもgnu99やc11などを指定することができる。