Output of C Programs | Set 14

• Difficulty Level : Medium
• Last Updated : 23 Aug, 2021

Predict the output of below C programs.
Question 1

C

 #include int main() {    int a;    char *x;    x = (char *) &a;    a = 512;    x = 1;    x = 2;    printf("%d\n",a);      getchar();    return 0; }

Answer: The output is dependent on endianness of a machine. Output is 513 in a little endian machine and 258 in a big endian machine.
Let integers are stored using 16 bits. In a little endian machine, when we do x = 1 and x = 2, the number a is changed to 00000001 00000010 which is representation of 513 in a little endian machine. The output would be same for 32 bit numbers also.
In a big endian machine, when we do x = 1 and x = 2, the number is changed to 00000001 00000010 which is representation of 258 in a big endian machine.
Question 2

C

 int main() {   int f = 0, g = 1;   int i;   for(i = 0; i < 15; i++)   {     printf("%d \n", f);     f = f + g;     g = f - g;   }   getchar();   return 0; }

Answer: The function prints first 15 Fibonacci Numbers.
Question 3
Explain functionality of following function.

C

 int func(int i) {   if(i%2) return (i++);   else return func(func(i-1)); }

Answer: If n is odd then returns n, else returns (n-1). So if n is 12 then we get 11 and if n is 11 then we get 11.