Question:

Consider the following ANSI C program. 

#include <stdio.h> 
int main() 
{ 
	int i, j, count; 
	count = 0; 
	i = 0; 
	for (j = -3; j <= 3; j++) 
	{ 
		if ((j >= 0) && (i++)) 
		count = count + j; 
	} 
	count = count + i; 
	printf("%d", count); 
	return 0; 
} 

Which one of the following options is correct? 
 

Show Hint

In C, logical AND (&&) uses short-circuit evaluation, so the second operand is evaluated only if the first is true.
Updated On: Jan 30, 2026
  • The program will not compile successfully.
  • The program will compile successfully and output 10 when executed.
  • The program will compile successfully and output 8 when executed.
  • The program will compile successfully and output 13 when executed.
Hide Solution
collegedunia
Verified By Collegedunia

The Correct Option is B

Solution and Explanation

Step 1: Initial values.
Initially,
\[ i = 0, count = 0 \] The loop runs for \(j = -3\) to \(j = 3\).

Step 2: Understanding the if-condition.
The condition is: \[ (j \ge 0) \ && \ (i++) \] The logical AND operator uses short-circuit evaluation. Hence, \(i++\) is executed only when \(j \ge 0\).

Step 3: Loop-wise evaluation.
For \(j = -3, -2, -1\):
\[ j \ge 0 \text{ is false } $\Rightarrow$ i++ \text{ is NOT executed} \] So, \(i = 0\), \(count = 0\).
For \(j = 0\):
\[ j \ge 0 \text{ is true, } i++ = 0 \ (\text{false}) \] Condition fails, but \(i\) becomes \(1\).
\(count\) unchanged.
For \(j = 1\):
\[ i++ = 1 \ (\text{true}) \] Condition true, so: \[ count = count + 1 = 1, i = 2 \]
For \(j = 2\):
\[ i++ = 2 \ (\text{true}) \] \[ count = 1 + 2 = 3, i = 3 \]
For \(j = 3\):
\[ i++ = 3 \ (\text{true}) \] \[ count = 3 + 3 = 6, i = 4 \]

Step 4: Final computation.
After the loop: \[ count = count + i = 6 + 4 = 10 \]

Step 5: Conclusion.
The program compiles successfully and prints: \[ 10 \]

Final Answer: (B)

Was this answer helpful?
0
0

Top Questions on Programming in C

View More Questions