auto int x , y ; x = f (2) + f (2); y = g (2) + g (2);
関数 f (u )
auto int u ;
auto int v = 1; v = v + u ;
return v ;
関数 g (u )
auto int u ;
static int v = 1; v = v + u ;
return v ;
x
y
ア
6
6
イ
6
8
ウ
8
6
エ
8
8
答え イ
【解説】 x の計算式 f (2) + f (2)
を求めると、1回目のf (2)は3であり、2回目のf (2)も関数f (u )内の変数v が動的割当てなので3であり、x = 6になる。
次に、y の計算式 g (2) + g (2)
を求めると、1回目のg (2)は3であり、2回目のg (2)は関数g (u )内の変数v が静的割当てで、1回目の結果BになっているのでDになり、y = 8になる。