C Operators tricky questions- Part 1

C programming tricky objective type operators questions and answers with explanation for written test and interview.

(1)What will be output of the following program?   

#include<stdio.h>

int main(){

int i=5,j;

j=++i+++i+++i;

printf(“%d %d”,i,j);

return 0;

}

Output:

Turbo C++ 3.0: 8 24

Reason: As you know, ++ is pre increment operator so in any arithmetic expression it first increment the value of variable by one in whole expression then starts assigning the final value of variable in the expression.

Compiler will treat this expression j = ++i+++i+++i; as

i = ++i + ++i + ++i;

Initial value of i = 5, due to three pre increment operator final value of i=8.

Now final value of i i.e. 8 will assigned to each variable.

So, j=8+8+8

j=24 and

i=8

Also Read :

Also Read :  C Operators

(2)What will be output of the following program?

#include<stdio.h>

int main(){

int i=1;

i=2+2*i++;

printf(“%d”,i);

return 0;

}

Output:

Turbo C++ 3.0: 5

Explanation:
i++ i.e. when postfix increment operator is used any expression the it first assign the its value in the expression then it increments the value of variable by one. So,

i = 2 + 2 * 1

i = 4

Now i will be incremented by one so i = 4 + 1 = 5

Also Read :  C Tricky Programs

(3)What will be output of the following program?

#include<stdio.h>

int main(){

int a=2,b=7,c=10;

c=a==b;

printf(“%d”,c);

return 0;

}

Output:

Turbo C++ 3.0: 0

Explanation:
== is relational operator which returns only two values.

0: If a == b is false

1: If a == b is true

Since

a=2

b=7

So, a == b is false hence b=0

 

(4)What will be output of the following program?

#include<stdio.h>

void main(){

int x;

x=10,20,30;

printf(“%d”,x);

return 0;

}

Output:

Turbo C++ 3.0: 10

Explanation :

Precedence table:

Operator Precedence Associative
 = More than , Right to left
 , Least Left to right

Since assignment operator (=) has more precedence than comma operator .So = operator will be evaluated first than comma operator. In the following expression

x = 10, 20, 30

First 10 will be assigned to x then comma operator will be evaluated.

(5) What will be output of the following program?

#include<stdio.h>

int main(){

int a=0,b=10;

if(a=0){

printf(“true”);

}

else{

printf(“false”);

}

return 0;

}

Output:

Turbo C++ 3.0: false

Explanation:

As we know there is difference between = and == . = is assignment operator not relation operator. So, a = 0 means zero will assigned to variable a. In c zero represent false and any non-zero number represents true.

So, if(0) means condition is always false hence else part will execute.

 

(6) What will be output of the following program?

#include<stdio.h>

int main(){

int a;

a=015 + 0x71 +5;

printf(“%d”,a);

return 0;

}

Output:

Turbo C++ 3.0: 131

Explanation:
015 is octal number its decimal equivalent is = 5 * 8 ^ 0 + 1 * 8 ^ 1 = 5 + 8 = 13

0x71 is hexadecimal number (0x is symbol of hexadecimal) its decimal equivalent is = 1 * 16 ^ 0 + 7 * 16 ^ 1 = 1 + 112 = 113

So, a = 13 + 113 + 5 = 131

(7) What will be output of the following program?

#include<stdio.h>

int main(){

printf(“%d %d %d”,sizeof(3.14),sizeof(3.14f),sizeof(3.14L));

return 0;

}

Output:

Turbo C++ 3.0: 8 4 10

Explanation:
3.14f is floating point constant. Its size is 4 byte. 3.14 is double constant (default). Its size is 8 byte. 3.14L is long double constant. Its size is 10 byte. sizeof() operator always return the size of data type which is written inside the().

Also Read : Looping tricky questions in C language

 (8) What will be output of the following program?

#include<stdio.h>

int main(){

int x=100,y=20,z=5;

printf(“%d %d %d”);

return 0;

}

Output:

Turbo C++ 3.0: 5 20 100


By default x, y, z are auto type data which are stored in stack in memory. Stack is LIFO data structure. So in stack first stores 100 then 20 then 5 and program counter will point top stack i.e. 5. Default value of %d in printf is data which is present in stack. So output is revere order of declaration. So output will be 5 20 100.
(9) What will be output of the following program?

#include<stdio.h>

int main(){

int a;

a=sizeof(!5.6);

printf(“%d”,a);

return 0;

}

Output:

Turbo C++ 3.0: 2

Explanation:

! is negation operator it return either integer 0 or 1.
! Any operand = 0 if operand is non zero.
! Any operand = 1 if operand is zero.
So, !5.6 = 0

Since 0 is integer number and size of integer data type is two byte.