応用情報23年 秋 午前 問22

【問題を解く前に】
基礎理論→アルゴリズムとプログラミング→4. プログラム言語→(3)プログラム言語の記憶域

ここで問われているのはstaticとautoの違いです
autoは、関数が呼び出されるたびに、変数は初期化されます
staticは、関数がはじめて呼び出されるとき、変数は初期化されます
  →以降、初期化されません

【解き方】

xについて

呼び出されるたびに、vは1に初期化される

なので、

x=f(2)+f(2)において、

はじめのf(2)で
引数からu=2
宣言よりv=1となり、
v=1+2=3となって、3を返すが、

次のf(2)で
引数からu=2
宣言よりv=1(また初期化)となり、
v=1+2=3となって、3を返す

結果としてxは、3+3=6

一方yはy=g(2)+g(2)において、

はじめのg(2)は
引数からu=2
宣言よりv=1となり、
v=1+2=3となって、3を返すが、

次のg(2)で
引数からu=2
vはstaticなので初期化しない。つまりv=3のままとなり
v=3+2=5となって、5を返す

結果としてxは、3+5=8


【答え】



★(PR) まぐまぐでメルマガ始めました。以下のとおりです。よかったら、登録してくださいね!
●メルマガID:0001289711
 【メルマガタイトル】 試験と実務の関連を説明する−実践!情報処理試験講座 メール版
 【個別ページ】 http://www.mag2.com/m/0001289711.html

★(PR) 情報処理の基礎講座も始めました。以下のとおりです。よかったら、見てくださいね!
 【基礎講座】http://ameblo.jp/smeokano/