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.
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
23 Aug, 2021
Like Article
Save Article