2.3 例題(1)

  1.例題2-1 自動的/静的記憶域クラスが混在している例
 以下のプログラムを実行したときに、その出力は、
main.i = 0,   test0.k = U1,  test1.k = V1,   test2.k = W1
main.i = 1,   test0.k = U2,  test1.k = V2,   test2.k = W2
main.i = 2,   test0.k = U3,  test1.k = V3,   test2.k = W3
のようになります。さて、このU1,U2,U3,V1,V2,V3,W1,W2,W3に入る値はそれぞれどのようになるのでしょうか?
(a)プログラムリスト

#include <stdio.h>

void test0( void );
void test1( void );
void test2( void );

int main( void )
{
 int i;

 for(i = 0; i < 3; ++i){
  printf("main.i = %d, ",i);
  test0(); 
  test1(); 
  test2(); 
  } 
}

void test0(void)
{
 int k = 1;

 printf("test0.k = %d, ",k);
  k++;
}

void test1(void)
{
 static int k = 1;

 printf("test1.k = %d, ",k);
 k++;
}

void test2(void)
{
 static int k;

 k = 1;
 printf("test2.k = %d\n",k);
 k++;
}

(b)結果
U1 = 1, V1 = 1, W1 = 1
U2 = 1, V2 = 2, W2 = 1
U3 = 1, V3 = 3, W3 = 1