(1)What will be the output of the following program
main()
{
float me = 1.1;
double you = 1.1;
if(me==you)
printf(“Yes “);
else
printf(” No “);
}
Answer:
No
Explanation:
For floating point numbers (float, double, long double) the values cannot be predicted exactly. Depending on the number of bytes, the precession with of the value represented varies. Float takes 4 bytes and long double takes 10 bytes. So float stores 0.9 with less precision than long double.
(2) What will be the output of the following program
main()
{
char *p;
printf(“%d %d “,sizeof(*p),sizeof(p));
}
Answer:
1 2
Explanation:
The sizeof() operator gives the number of bytes taken by its operand. P is a character pointer, which needs one byte for storing its value (a character). Hence sizeof(*p) gives a value of 1. Since it needs two bytes to store the address of the character pointer sizeof(p) gives 2.
Also Read : C Tricky Programs
(3) What will be the output of the following program
main()
{
int i=1;
switch(i)
{
default:printf(“zero”);
case 1: printf(“one”);
break;
case 2:printf(“two”);
break;
case 3: printf(“three”);
break;
}
}
Answer :
one
Explanation :
The default case can be placed anywhere inside the loop. It is executed only when all other cases doesn’t match.
(4) What will be the output of the following program
main()
{
int i=5;
printf(“%d%d%d%d%d%d”,i++,i–,++i,–i,i);
}
Answer:
45545
Explanation:
The arguments in a function call are pushed into the stack from left to right. The evaluation is by popping out from the stack. and the evaluation is from right to left, hence the result.
Also Read : Looping tricky questions in C language
(5) What will be the output of the following program
#define clrscr() 5
main()
{
clrscr();
printf(“%d\n”,clrscr());
}
Answer:
5
Explanation:
Preprocessor executes as a seperate pass before the execution of the compiler. So textual replacement of clrscr() to 100 occurs.
(6)What will be the output of the following program
main()
{
printf(“%p”,main);
}
Answer:
Any random address will be printed.
Explanation:
Function names are just addresses (just like array names are addresses).main() is also a function. So the address of function main will be printed. %p in printf specifies that the argument is an address. They are printed as hexadecimal numbers.
(7) What will be the output of the following program
enum colors {BLACK,BLUE,GREEN}
main()
{
printf(“%d..%d..%d”,BLACK,BLUE,GREEN);
return(1);
}
Answer:
0..1..2
Explanation:
enum assigns numbers starting from 0, if not explicitly defined.
Also Read : C Operators tricky questions
(8) What will be the output of the following program
main()
{
int i;
printf(“%d”,scanf(“%d”,&i)); // value 10 is given as input here
}
Answer:
1
Explanation:
Scanf returns number of items successfully read and not 1/0. Here 10 is given as input which should have been scanned successfully. So number of items read is 1.
(9) What will be the output of the following program
main()
{
int i=0;
for(;i++;printf(“%d”,i)) ;
printf(“%d”,i);
}
Answer:
1
Explanation:
before entering into the for loop the checking condition is “evaluated”. Here it evaluates to 0 (false) and comes out of the loop, and i is incremented (note the semicolon after the for loop).
- MongoDB Operators Tutorial – What are Different Operators Available? - October 5, 2019
- MongoDB Projection Tutorial : Return Specific Fields From Query - March 9, 2019
- MongoDB Index Tutorial – Create Index & MongoDB Index Types - July 6, 2018