Expressions - Programming

Q1:

What will be the output of the program?
#include<stdio.h>
int main()
{
    static int a[20];
    int i = 0;
    a[i] = i  ;
    printf('%d, %d, %d\n', a[0], a[1], i);
    return 0;
}

A 1, 0, 1

B 1, 1, 1

C 0, 0, 0

D 0, 1, 0

ANS:A - 1, 0, 1

Step 1: static int a[20]; here variable a is declared as an integer type and static. If a variable is declared as static and it will be automatically initialized to value '0'(zero). Step 2: int i = 0; here vaiable i is declared as an integer type and initialized to '0'(zero).
Step 3: a[i] = i ; becomes a[0] = 0;
Step 4: printf('%d, %d, %d\n', a[0], a[1], i);
Here a[0] = 0, a[1] = 0(because all staic variables are initialized to '0') and i = 0.
Step 4: Hence the output is '0, 0, 0'.