C language – while loop syntax sanity check:
Point out the compile-time error (if any) in this loop with a missing condition.
#include
int main()
{
int i = 1;
while()
{
printf("%d
", i++);
if (i > 10)
break;
}
return 0;
}
-
AThere should be a condition in the while loop
-
BThere should be at least a semicolon in the while
-
CThe while loop should be replaced with for loop.
-
DNo error
-
ENone of the above
Answer
Correct Answer: There should be a condition in the while loop
Explanation
Introduction / Context:This item tests your grasp of the required syntax for a while loop in C. The loop header must contain a parenthesized expression that can be evaluated to determine whether the next iteration should execute.
Given Data / Assumptions:
- The loop is written as
while()with empty parentheses. - Body prints
iand conditionallybreaks.
Concept / Approach:In C, while (expression) requires a valid scalar expression. An empty condition is a syntax error and will not compile. To create an intentional infinite loop, write while(1) (or for(;;)) rather than leaving the condition blank.
Step-by-Step Solution:Parse header: while() → missing expression → syntax error.Fix: add a condition such as while (i <= 10) or while (1).Keep the break to terminate if needed.
Verification / Alternative check:Compiling will emit an error like “expected expression before ‘)’ token.” Changing to while(1) or a proper condition compiles.
Why Other Options Are Wrong:At least a semicolon — a semicolon after while creates an empty loop, not a fix here. Replace with for — unnecessary; while works when written correctly. No error — incorrect.
Common Pitfalls:Accidentally leaving conditions blank; confusing deliberate empty loops (while(x--);) with missing conditions.
Final Answer:There should be a condition in the while loop