Skip to content
Related Articles

Related Articles

Improve Article

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<stdio.h>
int main()
{
   int a;
   char *x;
   x = (char *) &a;
   a = 512;
   x[0] = 1;
   x[1] = 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[0] = 1 and x[1] = 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[0] = 1 and x[1] = 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. 
Please write comments if you find any of the answers/explanations incorrect, or you want to share more information about the topics discussed above.
 




My Personal Notes arrow_drop_up
Recommended Articles
Page :