C Programming Expressions Online Test
Finish Quiz
0 of 29 questions completed
Questions:
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
Information
C Programming Expressions Online Test. C Programming Question and Answers in English. C Programming Expressions Online mock test paper is free for all students and Very Helpful for Exam Preparation. C Programming Expressions Online Quiz. C Programming Online Mock test for Expressions Topic. Here we are providing C Programming Expressions Online Test Series in English. Check C Programming Mock Test Series 20242024.
This paper has 30 questions.
Time allowed is 30 minutes.
The C Programming online Mock Test Exam is Very helpful for all students. Now Scroll down below n click on “Start Quiz” or “Start Test” and Test yourself.
You have already completed the quiz before. Hence you can not start it again.
Quiz is loading...
You must sign in or sign up to start the quiz.
You have to finish following quiz, to start this quiz:
Results
0 of 29 questions answered correctly
Your time:
Time has elapsed
You have reached 0 of 0 points, (0)
Average score 

Your score 

Categories
 Not categorized 0%
Pos.  Name  Entered on  Points  Result 

Table is loading  
No data available  
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 Answered
 Review

Question 1 of 29
1. Question
Which of the following is the correct order of evaluation for the below expression?
z = x + y * z / 4 % 2 – 1Correct
C uses left associativity for evaluating expressions to break a tie between two operators having same precedence.
Incorrect
C uses left associativity for evaluating expressions to break a tie between two operators having same precedence.

Question 2 of 29
2. Question
Which of the following correctly shows the hierarchy of arithmetic operations in C?
Correct
Simply called as BODMAS (Bracket of Division, Multiplication, Addition and Subtraction).
How Do I Remember ? BODMAS !
 B – Brackets first
 O – Orders (ie Powers and Square Roots, etc.)
 DM – Division and Multiplication (lefttoright)
 AS – Addition and Subtraction (lefttoright)
Incorrect
Simply called as BODMAS (Bracket of Division, Multiplication, Addition and Subtraction).
How Do I Remember ? BODMAS !
 B – Brackets first
 O – Orders (ie Powers and Square Roots, etc.)
 DM – Division and Multiplication (lefttoright)
 AS – Addition and Subtraction (lefttoright)

Question 3 of 29
3. Question
Which of the following is the correct usage of conditional operators used in C?
Correct
Option A: assignment statements are always return in paranthesis in the case of conditional operator. It should be a>b? (c=30):(c=40);
Option B: it is syntatically wrong.
Option D: syntatically wrong, it should be return(a>b ? a:b);
Option C: it uses nested conditional operator, this is logic for finding greatest number out of three numbers.
Incorrect
Option A: assignment statements are always return in paranthesis in the case of conditional operator. It should be a>b? (c=30):(c=40);
Option B: it is syntatically wrong.
Option D: syntatically wrong, it should be return(a>b ? a:b);
Option C: it uses nested conditional operator, this is logic for finding greatest number out of three numbers.

Question 4 of 29
4. Question
Which of the following is the correct order if calling functions in the below code?
a = f1(23, 14) * f2(12/4) + f3();Correct
Here, Multiplication will happen before the addition, but in which order the functions would be called is undefined. In an arithmetic expression the parenthesis tell the compiler which operands go with which operators but do not force the compiler to evaluate everything within the parenthesis first.
Incorrect
Here, Multiplication will happen before the addition, but in which order the functions would be called is undefined. In an arithmetic expression the parenthesis tell the compiler which operands go with which operators but do not force the compiler to evaluate everything within the parenthesis first.

Question 5 of 29
5. Question
Which of the following are unary operators in C?
1. !
2. sizeof
3. ~
4. &&Correct
An operation with only one operand is called unary operation.
Unary operators:
! Logical NOT operator.
~ bitwise NOT operator.
sizeof Sizeof operator.&& Logical AND is a logical operator.
Therefore, 1, 2, 3 are unary operators.
Incorrect
An operation with only one operand is called unary operation.
Unary operators:
! Logical NOT operator.
~ bitwise NOT operator.
sizeof Sizeof operator.&& Logical AND is a logical operator.
Therefore, 1, 2, 3 are unary operators.

Question 6 of 29
6. Question
In which order do the following gets evaluated
1. Relational
2.Arithmetic
3.Logical
4.AssignmentCorrect
2. Arithmetic operators: *, /, %, +, –
1. Relational operators: >, <, >=, <=, ==, !=
3. Logical operators : !, &&, 
4. Assignment operators: =Incorrect
2. Arithmetic operators: *, /, %, +, –
1. Relational operators: >, <, >=, <=, ==, !=
3. Logical operators : !, &&, 
4. Assignment operators: = 
Question 7 of 29
7. Question
What will be the output of the program?
#include<stdio.h> int main() { int i=3, j=2, k=0, m; m = ++i && ++j && ++k; printf("%d, %d, %d, %d\n", i, j, k, m); return 0; }
Correct
Step 1: int i=3, j=2, k=0, m; here variable i, j, k, m are declared as an integer type and variable i, j, k are initialized to 3, 2, 0 respectively.
Step 2: m = ++i && ++j && ++k;
becomes m = 2 && 3 && 1;
becomes m = TRUE && TRUE; Hence this statement becomes TRUE. So it returns ‘1’(one). Hence m=1.Step 3: printf(“%d, %d, %d, %d\n”, i, j, k, m); In the previous step the value of i,j,k are increemented by ‘1’(one).
Hence the output is “2, 3, 1, 1”.
Incorrect
Step 1: int i=3, j=2, k=0, m; here variable i, j, k, m are declared as an integer type and variable i, j, k are initialized to 3, 2, 0 respectively.
Step 2: m = ++i && ++j && ++k;
becomes m = 2 && 3 && 1;
becomes m = TRUE && TRUE; Hence this statement becomes TRUE. So it returns ‘1’(one). Hence m=1.Step 3: printf(“%d, %d, %d, %d\n”, i, j, k, m); In the previous step the value of i,j,k are increemented by ‘1’(one).
Hence the output is “2, 3, 1, 1”.

Question 8 of 29
8. Question
Assuming, integer is 2 byte, What will be the output of the program?
#include<stdio.h> int main() { printf("%x\n", 2<<2); return 0; }
Correct
The integer value 2 is represented as 00000000 00000010 in binary system.
Negative numbers are represented in 2’s complement method.
1’s complement of 00000000 00000010 is 11111111 11111101 (Change all 0s to 1 and 1s to 0).
2’s complement of 00000000 00000010 is 11111111 11111110 (Add 1 to 1’s complement to obtain the 2’s complement value).
Therefore, in binary we represent 2 as: 11111111 11111110.
After left shifting it by 2 bits we obtain: 11111111 11111000, and it is equal to “fff8” in hexadecimal system.
Incorrect
The integer value 2 is represented as 00000000 00000010 in binary system.
Negative numbers are represented in 2’s complement method.
1’s complement of 00000000 00000010 is 11111111 11111101 (Change all 0s to 1 and 1s to 0).
2’s complement of 00000000 00000010 is 11111111 11111110 (Add 1 to 1’s complement to obtain the 2’s complement value).
Therefore, in binary we represent 2 as: 11111111 11111110.
After left shifting it by 2 bits we obtain: 11111111 11111000, and it is equal to “fff8” in hexadecimal system.

Question 9 of 29
9. Question
What will be the output of the program?
#include<stdio.h> int main() { int i=3, j=2, k=0, m; m = ++i  ++j && ++k; printf("%d, %d, %d, %d\n", i, j, k, m); return 0;
Correct
Step 1: int i=3, j=2, k=0, m; here variable i, j, k, m are declared as an integer type and variable i, j, k are initialized to 3, 2, 0 respectively.
Step 2: m = ++i  ++j && ++k; here (++j && ++k;) this code will not get executed because ++i has nonzero value.
becomes m = 2  ++j && ++k;
becomes m = TRUE  ++j && ++k; Hence this statement becomes TRUE. So it returns ‘1’(one). Hence m=1.Step 3: printf(“%d, %d, %d, %d\n”, i, j, k, m); In the previous step the value of variable ‘i’ only increemented by ‘1’(one). The variable j,k are not increemented.
Hence the output is “2, 2, 0, 1”.
Incorrect
Step 1: int i=3, j=2, k=0, m; here variable i, j, k, m are declared as an integer type and variable i, j, k are initialized to 3, 2, 0 respectively.
Step 2: m = ++i  ++j && ++k; here (++j && ++k;) this code will not get executed because ++i has nonzero value.
becomes m = 2  ++j && ++k;
becomes m = TRUE  ++j && ++k; Hence this statement becomes TRUE. So it returns ‘1’(one). Hence m=1.Step 3: printf(“%d, %d, %d, %d\n”, i, j, k, m); In the previous step the value of variable ‘i’ only increemented by ‘1’(one). The variable j,k are not increemented.
Hence the output is “2, 2, 0, 1”.

Question 10 of 29
10. Question
What will be the output of the program?
#include<stdio.h> int main() { int x=12, y=7, z; z = x!=4  y == 2; printf("z=%d\n", z); return 0; }
Correct
Step 1: int x=12, y=7, z; here variable x, y and z are declared as an integer and variable x and y are initialized to 12, 7 respectively.
Step 2: z = x!=4  y == 2;
becomes z = 12!=4  7 == 2;
then z = (condition true)  (condition false); Hence it returns 1. So the value of z=1.Step 3: printf(“z=%d\n”, z); Hence the output of the program is “z=1”.
Incorrect
Step 1: int x=12, y=7, z; here variable x, y and z are declared as an integer and variable x and y are initialized to 12, 7 respectively.
Step 2: z = x!=4  y == 2;
becomes z = 12!=4  7 == 2;
then z = (condition true)  (condition false); Hence it returns 1. So the value of z=1.Step 3: printf(“z=%d\n”, z); Hence the output of the program is “z=1”.

Question 11 of 29
11. Question
What will be the output of the program?
#include<stdio.h> int main() { static int a[20]; int i = 0; a[i] = i ; printf("%d, %d, %d\n", a[0], a[1], i); return 0; }
Correct
Step 1: static int a[20]; here variable a is declared as an integer type and static. If a variable is declared as static and it will ne automatically initialized to value ‘0’(zero).
Step 2: int i = 0; here vaiable i is declared as an integer type and initialized to ‘0’(zero).
Step 3: a[i] = i ; becomes a[0] = 0;
Step 4: printf(“%d, %d, %d\n”, a[0], a[1], i);
Here a[0] = 0, a[1] = 0(because all staic variables are initialized to ‘0’) and i = 0.
Step 4: Hence the output is “0, 0, 0”.Incorrect
Step 1: static int a[20]; here variable a is declared as an integer type and static. If a variable is declared as static and it will ne automatically initialized to value ‘0’(zero).
Step 2: int i = 0; here vaiable i is declared as an integer type and initialized to ‘0’(zero).
Step 3: a[i] = i ; becomes a[0] = 0;
Step 4: printf(“%d, %d, %d\n”, a[0], a[1], i);
Here a[0] = 0, a[1] = 0(because all staic variables are initialized to ‘0’) and i = 0.
Step 4: Hence the output is “0, 0, 0”. 
Question 12 of 29
12. Question
What will be the output of the program?
#include<stdio.h> int main() { int i=4, j=1, k=0, w, x, y, z; w = i  j  k; x = i && j && k; y = i  j &&k; z = i && j  k; printf("%d, %d, %d, %d\n", w, x, y, z); return 0; }
Correct
Step 1: int i=4, j=1, k=0, w, x, y, z; here variable i, j, k, w, x, y, z are declared as an integer type and the variable i, j, k are initialized to 4, 1, 0 respectively.
Step 2: w = i  j  k; becomes w = 4  1  0;. Hence it returns TRUE. So, w=1
Step 3: x = i && j && k; becomes x = 4 && 1 && 0; Hence it returns FALSE. So, x=0
Step 4: y = i  j &&k; becomes y = 4  1 && 0; Hence it returns TRUE. So, y=1
Step 5: z = i && j  k; becomes z = 4 && 1  0; Hence it returns TRUE. So, z=1.
Step 6: printf(“%d, %d, %d, %d\n”, w, x, y, z); Hence the output is “1, 0, 1, 1”.
Incorrect
Step 1: int i=4, j=1, k=0, w, x, y, z; here variable i, j, k, w, x, y, z are declared as an integer type and the variable i, j, k are initialized to 4, 1, 0 respectively.
Step 2: w = i  j  k; becomes w = 4  1  0;. Hence it returns TRUE. So, w=1
Step 3: x = i && j && k; becomes x = 4 && 1 && 0; Hence it returns FALSE. So, x=0
Step 4: y = i  j &&k; becomes y = 4  1 && 0; Hence it returns TRUE. So, y=1
Step 5: z = i && j  k; becomes z = 4 && 1  0; Hence it returns TRUE. So, z=1.
Step 6: printf(“%d, %d, %d, %d\n”, w, x, y, z); Hence the output is “1, 0, 1, 1”.

Question 13 of 29
13. Question
What will be the output of the program?
#include<stdio.h> int main() { int i=3, j=2, k=0, m; m = ++i && ++j  ++k; printf("%d, %d, %d, %d\n", i, j, k, m); return 0;
Correct
Step 1: int i=3, j=2, k=0, m; here variable i, j, k, m are declared as an integer type and variable i, j, k are initialized to 3, 2, 0 respectively.
Step 2: m = ++i && ++j  ++k;
becomes m = (2 && 3)  ++k;
becomes m = TRUE  ++k;.
(++k) is not executed because (2 && 3) alone return TRUE.
Hence this statement becomes TRUE. So it returns ‘1’(one). Hence m=1.Step 3: printf(“%d, %d, %d, %d\n”, i, j, k, m); In the previous step the value of i,j are increemented by ‘1’(one).
Hence the output is “2, 3, 0, 1”.
Incorrect
Step 1: int i=3, j=2, k=0, m; here variable i, j, k, m are declared as an integer type and variable i, j, k are initialized to 3, 2, 0 respectively.
Step 2: m = ++i && ++j  ++k;
becomes m = (2 && 3)  ++k;
becomes m = TRUE  ++k;.
(++k) is not executed because (2 && 3) alone return TRUE.
Hence this statement becomes TRUE. So it returns ‘1’(one). Hence m=1.Step 3: printf(“%d, %d, %d, %d\n”, i, j, k, m); In the previous step the value of i,j are increemented by ‘1’(one).
Hence the output is “2, 3, 0, 1”.

Question 14 of 29
14. Question
What will be the output of the program?
#include<stdio.h> int main() { int x=4, y, z; y = x; z = x; printf("%d, %d, %d\n", x, y, z); return 0; }
Correct
Step 1: int x=4, y, z; here variable x, y, z are declared as an integer type and variable x is initialized to 4.
Step 2: y = –x; becomes y = 3; because (–x) is predecrement operator.
Step 3: z = x–; becomes z = 3;. In the next step variable x becomes 2, because (x–) is postdecrement operator.
Step 4: printf(“%d, %d, %d\n”, x, y, z); Hence it prints “2, 3, 3”.Incorrect
Step 1: int x=4, y, z; here variable x, y, z are declared as an integer type and variable x is initialized to 4.
Step 2: y = –x; becomes y = 3; because (–x) is predecrement operator.
Step 3: z = x–; becomes z = 3;. In the next step variable x becomes 2, because (x–) is postdecrement operator.
Step 4: printf(“%d, %d, %d\n”, x, y, z); Hence it prints “2, 3, 3”. 
Question 15 of 29
15. Question
What will be the output of the program?
#include<stdio.h> int main() { int i=3; i = i++; printf("%d\n", i); return 0; }
Correct
Incorrect

Question 16 of 29
16. Question
What will be the output of the program?
#include<stdio.h> int main() { int a=100, b=200, c; c = (a == 100  b > 200); printf("c=%d\n", c); return 0; }
Correct
Step 1: int a=100, b=200, c;
Step 2: c = (a == 100  b > 200);
becomes c = (100 == 100  200 > 200);
becomes c = (TRUE  FALSE);
becomes c = (TRUE);(ie. c = 1)
Step 3: printf(“c=%d\n”, c); It prints the value of variable i=1
Hence the output of the program is ‘1’(one).Incorrect
Step 1: int a=100, b=200, c;
Step 2: c = (a == 100  b > 200);
becomes c = (100 == 100  200 > 200);
becomes c = (TRUE  FALSE);
becomes c = (TRUE);(ie. c = 1)
Step 3: printf(“c=%d\n”, c); It prints the value of variable i=1
Hence the output of the program is ‘1’(one). 
Question 17 of 29
17. Question
What will be the output of the program?
#include<stdio.h> int main() { int x=55; printf("%d, %d, %d\n", x<=55, x=40, x>=10); return 0; }
Correct
Step 1: int x=55; here variable x is declared as an integer type and initialized to ’55’.
Step 2: printf(“%d, %d, %d\n”, x<=55, x=40, x>=10);
In printf the execution of expressions is from Right to Left.
here x>=10 returns TRUE hence it prints ‘1’.
x=40 here x is assigned to 40 Hence it prints ’40’.
x<=55 returns TRUE. hence it prints ‘1’.
Step 3: Hence the output is “1, 40, 1”.Incorrect
Step 1: int x=55; here variable x is declared as an integer type and initialized to ’55’.
Step 2: printf(“%d, %d, %d\n”, x<=55, x=40, x>=10);
In printf the execution of expressions is from Right to Left.
here x>=10 returns TRUE hence it prints ‘1’.
x=40 here x is assigned to 40 Hence it prints ’40’.
x<=55 returns TRUE. hence it prints ‘1’.
Step 3: Hence the output is “1, 40, 1”. 
Question 18 of 29
18. Question
What will be the output of the program?
#include<stdio.h> int main() { int i=2; printf("%d, %d\n", ++i, ++i); return 0; }
Correct
The order of evaluation of arguments passed to a function call is unspecified.
Anyhow, we consider ++i, ++i are RighttoLeft associativity. The output of the program is 4, 3.
In TurboC, the output will be 4, 3.
In GCC, the output will be 4, 4.
Incorrect
The order of evaluation of arguments passed to a function call is unspecified.
Anyhow, we consider ++i, ++i are RighttoLeft associativity. The output of the program is 4, 3.
In TurboC, the output will be 4, 3.
In GCC, the output will be 4, 4.

Question 19 of 29
19. Question
What will be the output of the program?
#include<stdio.h> int main() { int k, num=30; k = (num>5 ? (num <=10 ? 100 : 200): 500); printf("%d\n", num); return 0; }
Correct
Step 1: int k, num=30; here variable k and num are declared as an integer type and variable num is initialized to ’30’.
Step 2: k = (num>5 ? (num <=10 ? 100 : 200): 500); This statement does not affect the output of the program. Because we are going to print the variable num in the next statement. So, we skip this statement.
Step 3: printf(“%d\n”, num); It prints the value of variable num ’30’
Step 3: Hence the output of the program is ’30’Incorrect
Step 1: int k, num=30; here variable k and num are declared as an integer type and variable num is initialized to ’30’.
Step 2: k = (num>5 ? (num <=10 ? 100 : 200): 500); This statement does not affect the output of the program. Because we are going to print the variable num in the next statement. So, we skip this statement.
Step 3: printf(“%d\n”, num); It prints the value of variable num ’30’
Step 3: Hence the output of the program is ’30’ 
Question 20 of 29
20. Question
What will be the output of the program?
#include<stdio.h> int main() { char ch; ch = 'A'; printf("The letter is"); printf("%c", ch >= 'A' && ch <= 'Z' ? ch + 'a'  'A':ch); printf("Now the letter is"); printf("%c\n", ch >= 'A' && ch <= 'Z' ? ch : ch + 'a'  'A'); return 0;
Correct
Step 1: char ch; ch = ‘A’; here variable ch is declared as an character type an initialized to ‘A’.
Step 2: printf(“The letter is”); It prints “The letter is”.
Step 3: printf(“%c”, ch >= ‘A’ && ch <= ‘Z’ ? ch + ‘a’ – ‘A’:ch);
The ASCII value of ‘A’ is 65 and ‘a’ is 97.
Here
=> (‘A’ >= ‘A’ && ‘A’ <= ‘Z’) ? (A + ‘a’ – ‘A’):(‘A’)
=> (TRUE && TRUE) ? (65 + 97 – 65) : (‘A’)
=> (TRUE) ? (97): (‘A’)
In printf the format specifier is ‘%c’. Hence prints 97 as ‘a’.
Step 4: printf(“Now the letter is”); It prints “Now the letter is”.
Step 5: printf(“%c\n”, ch >= ‘A’ && ch <= ‘Z’ ? ch : ch + ‘a’ – ‘A’);
Here => (‘A’ >= ‘A’ && ‘A’ <= ‘Z’) ? (‘A’) : (A + ‘a’ – ‘A’)
=> (TRUE && TRUE) ? (‘A’) :(65 + 97 – 65)
=> (TRUE) ? (‘A’) : (97)
It prints ‘A’
Hence the output is
The letter is a
Now the letter is AIncorrect
Step 1: char ch; ch = ‘A’; here variable ch is declared as an character type an initialized to ‘A’.
Step 2: printf(“The letter is”); It prints “The letter is”.
Step 3: printf(“%c”, ch >= ‘A’ && ch <= ‘Z’ ? ch + ‘a’ – ‘A’:ch);
The ASCII value of ‘A’ is 65 and ‘a’ is 97.
Here
=> (‘A’ >= ‘A’ && ‘A’ <= ‘Z’) ? (A + ‘a’ – ‘A’):(‘A’)
=> (TRUE && TRUE) ? (65 + 97 – 65) : (‘A’)
=> (TRUE) ? (97): (‘A’)
In printf the format specifier is ‘%c’. Hence prints 97 as ‘a’.
Step 4: printf(“Now the letter is”); It prints “Now the letter is”.
Step 5: printf(“%c\n”, ch >= ‘A’ && ch <= ‘Z’ ? ch : ch + ‘a’ – ‘A’);
Here => (‘A’ >= ‘A’ && ‘A’ <= ‘Z’) ? (‘A’) : (A + ‘a’ – ‘A’)
=> (TRUE && TRUE) ? (‘A’) :(65 + 97 – 65)
=> (TRUE) ? (‘A’) : (97)
It prints ‘A’
Hence the output is
The letter is a
Now the letter is A 
Question 21 of 29
21. Question
What will be the output of the program?
#include<stdio.h> int main() { int i=2; int j = i + (1, 2, 3, 4, 5); printf("%d\n", j); return 0; }
Correct
Because, comma operator used in the expression i (1, 2, 3, 4, 5). The comma operator has leftright associativity. The left operand is always evaluated first, and the result of evaluation is discarded before the right operand is evaluated. In this expression 5 is the right most operand, hence after evaluating expression (1, 2, 3, 4, 5) the result is 5, which on adding to i results into 7.
Incorrect
Because, comma operator used in the expression i (1, 2, 3, 4, 5). The comma operator has leftright associativity. The left operand is always evaluated first, and the result of evaluation is discarded before the right operand is evaluated. In this expression 5 is the right most operand, hence after evaluating expression (1, 2, 3, 4, 5) the result is 5, which on adding to i results into 7.

Question 22 of 29
22. Question
Associativity has no role to play unless the precedence of operator is same.
Correct
Associativity is only needed when the operators in an expression have the same precedence. Usually + and – have the same precedence.
Consider the expression 7 – 4 + 2. The result could be either (7 – 4) + 2 = 5 or 7 – (4 + 2) = 1. The former result corresponds to the case when + and – are leftassociative, the latter to when + and – are rightassociative.
Usually the addition, subtraction, multiplication, and division operators are leftassociative, while the exponentiation, assignment and conditional operators are rightassociative. To prevent cases where operands would be associated with two operators, or no operator at all, operators with the same precedence must have the same associativity.
Incorrect
Associativity is only needed when the operators in an expression have the same precedence. Usually + and – have the same precedence.
Consider the expression 7 – 4 + 2. The result could be either (7 – 4) + 2 = 5 or 7 – (4 + 2) = 1. The former result corresponds to the case when + and – are leftassociative, the latter to when + and – are rightassociative.
Usually the addition, subtraction, multiplication, and division operators are leftassociative, while the exponentiation, assignment and conditional operators are rightassociative. To prevent cases where operands would be associated with two operators, or no operator at all, operators with the same precedence must have the same associativity.

Question 23 of 29
23. Question
The expression of the right hand side of  operators doesn’t get evaluated if the left hand side determines the outcome.
Correct
Because, if a is nonzero then b will not be evaluated in the expression (a  b)Incorrect
Because, if a is nonzero then b will not be evaluated in the expression (a  b) 
Question 24 of 29
24. Question
In the expression a=b=5 the order of Assignment is NOT decided by Associativity of operators
Correct
The equal to = operator has RighttoLeft Associativity. So it assigns b=5 then a=b.
Incorrect
The equal to = operator has RighttoLeft Associativity. So it assigns b=5 then a=b.

Question 25 of 29
25. Question
Associativity of an operator is either Left to Right or Right to Left.
Correct
Yes, the associativity of an operator is either Left to Right or Right to Left.
Incorrect
Yes, the associativity of an operator is either Left to Right or Right to Left.

Question 26 of 29
26. Question
Are the following two statement same?
1. a <= 20 ? (b = 30): (c = 30);
2. (a <=20) ? b : (c = 30);Correct
No, the expressions 1 and 2 are not same.
1. a <= 20 ? (b = 30) : (c = 30); This statement can be rewritten as,
if(a <= 20) { b = 30; } else { c = 30; }
2. (a <=20) ? b : (c = 30); This statement can be rewritten as,
if(a <= 20) { //Nothing here } else { c = 30; }
Incorrect
No, the expressions 1 and 2 are not same.
1. a <= 20 ? (b = 30) : (c = 30); This statement can be rewritten as,
if(a <= 20) { b = 30; } else { c = 30; }
2. (a <=20) ? b : (c = 30); This statement can be rewritten as,
if(a <= 20) { //Nothing here } else { c = 30; }

Question 27 of 29
27. Question
Two different operators would always have different Associativity.
Correct
No, Two different operators may have same associativity.
Example:
Arithmetic operators like ++, — having RighttoLeft associativity.
Relational operators like >, >= also have LefttoRight associativity.Incorrect
No, Two different operators may have same associativity.
Example:
Arithmetic operators like ++, — having RighttoLeft associativity.
Relational operators like >, >= also have LefttoRight associativity. 
Question 28 of 29
28. Question
Will the expression *p = p be disallowed by the compiler?
Correct
Because, here even though the value of p is accessed twice it is used to modify two different objects p and *p
Incorrect
Because, here even though the value of p is accessed twice it is used to modify two different objects p and *p

Question 29 of 29
29. Question
Every operator has an Associativity
Correct
Yes, Each and every operator has an associativity.
The associativity (or fixity) of an operator is a property that determines how operators of the same precedence are grouped in the absence of parentheses. Operators may be leftassociative, rightassociative or nonassociative.
Incorrect
Yes, Each and every operator has an associativity.
The associativity (or fixity) of an operator is a property that determines how operators of the same precedence are grouped in the absence of parentheses. Operators may be leftassociative, rightassociative or nonassociative.