Predict the output of below C programs.

**Question 1**

`#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; ` `} ` |

*chevron_right*

*filter_none*

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**

`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; ` `} ` |

*chevron_right*

*filter_none*

Answer: The function prints first 15 Fibonacci Numbers.

**Question 3**

Explain functionality of following function.

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

*chevron_right*

*filter_none*

Answer: If n is odd then returns n, else returns (n-1). So if n is 12 then we get 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.