平成17年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
W−3
次のC言語のプログラムを実行したときに、表示される結果を選べ。
#include <stdio.h>
int x, y ;
int f(int a, int x)
{
 ++y ;
 ++x ;
 return a+y ;
}
main () {
 int y, z ;
 y = 100 ;
 z = f(10, y) ;
 z += y ;
 printf("%d\n", z) ;
}

 @ 11  A 101  B 110  C 111  D 211



【正解】 C

main() の x, は外部変数であり、y, z は内部変数である。
f() の x, y は外部変数であり、 a は内部変数である。

以下のように変数の値が変化していく。
main() の y は便宜上 Y と記す。

int y, z   ・・・(x, Y, z) = (0 ,0, 0)
y = 100   ・・・(x, Y, z) = (0 ,100, 0)
f(10, y)   ・・・(x, Y, z) = (0 ,100, 0)
 
f(int a, int x)    ・・・(x, y) = (100 ,0)  a = 10
  
++y    ・・・(x, y) = (100 ,1)  a = 10
  
++x    ・・・(x, y) = (101 ,1)  a = 10
  
return a+y ・・・(x, y) = (101 ,1)  a = 10
z = f(10, y)  ・・・(x, Y, z) = (101, 100, 11)
z += y    ・・・(x, Y, z) = (101 ,100, 111)

なお、 z += y は  z = z + y と同じことである。

EXCELのマクロのご相談なら ファーストマクロ 



W−2 目次 W−4
ファーストマクロ TOPページ