#include <stdio.h>
void staticprint()
{
int number = 0;
static int snumber = 0;
number += 5;
snumber += 5;
printf("number = %d, snumber = %d\n", number, snumber);
}
int main()
{
int i;
for (i = 0; i < 5; ++i)
staticprint();
}
このコードは下記のように出力されます
number = 5, snumber = 5
number = 5, snumber = 10
number = 5, snumber = 15
number = 5, snumber = 20
number = 5, snumber = 25
Staticで定義したsnumberは、最初に値が代入されて定義された時から、プログラムの処理が終わるまで現在の値を保持するという意味だからです(6行目の代入は1度目の代入以降は意味をなしません。)