Expressions
(C-FAQ's)
Q1: Do you know in which order Relational, Logical,
Arithmetic and Assignment operators get evaluated?
A. Relational, Logical, Arithmetic, Assignment
B. Arithmetic, Relational, Logical,
Assignment
C. Arithmetic, Logical, Relational, Assignment
Output:
B. Arithmetic, Relational, Logical ,
Assignment.
Q2: What is the output of the following code?
int max(int iA, int iB)
{
iA>iB?
return (iA): return(iB);
}
int main()
{
printf("
max = %d\n ", max(5,10) );
return
0;
}
Output:
Compiler will return an error because of not
properly using return.
Expression should be written as :-
return ( iA > iB ? iA: iB ) ;
Q3: What is the output of the following code?
#include<stdio.h>
int main()
{
int
iNum = ( -1, 0, 2, 3, 5 );
printf("
value of iNum = %d\n", iNum );
return
0;
}
Output:
value of iNum = 5
Because comma operator has left to right
associativity. The left operand is always evaluated first, the result of
evaluation is discarded before the right operand.
Here right most is operand is 5.
Q4: What is the output of the following code?
int main()
{
int
i=3, j=-2, k=0, a, b, c, d;
a=i
|| j || k;
b=
i && j && k;
c=i
|| j++ && k;
d=
i && j || --k;
printf("%d
%d %d %d\n ", a ,b ,c ,d);
return
0;
}
A. 1 0 1 1
B. 1 1 0 1
C. 1 1 1 1
D. Output may vary from compiler to
compiler.
Output:
1 0 1 1
No comments:
Post a Comment