Hello friends Please help me with following problem in C

void main()
{
static int sub[5]={10,20,30,40,50};
int i=5;
clrscr();
sub[i]=i*i;
printf("%d\n",sub[i]);
getch();
}


Here the storage class of array sub[] is declared to be static and printf prints character corresponding to ASCII value 25

If we declare storage class of sub[] to be auto then printf() prints 25

Why this difference comes