C language – switch-case validation and constants: Point out the specific compile-time error(s) in this program. #include <stdio.h> int main() { int P = 10; switch (P) { case 10: printf("Case 1"); case 20: printf("Case 2"); break; case P: printf("Case 2"); break; } return 0; }

Difficulty: Easy

Correct Answer: Error: Constant expression required at line case P:

Explanation:

Introduction / Context:This question checks understanding of the C switch statement rules, especially that every case label must be a constant expression known at compile time. It also probes common misconceptions such as whether a default label is mandatory and if missing break statements are compilation errors or just logic issues.

Given Data / Assumptions:

  • An integer selector P equals 10.
  • Case labels include 10, 20, and P.
  • One branch omits break after printing.

Concept / Approach:In C, case labels must be constant expressions, e.g., integer literals, enums, or constexpr-like arithmetic on constants. A variable name such as P is not constant in this context. The compiler therefore issues an error for case P:. A missing default label is allowed (no error). Missing break causes fall-through at runtime but is not a compile-time error.

Step-by-Step Solution:Identify invalid label: case P: uses a non-constant variable.Recall rule: case labels must be compile-time constants.Conclude: compilation fails on the case P: line.Note: absence of default and fall-through after case 10 are legal.

Verification / Alternative check:Replace case P: by case 10: or make P an enum constant; the code will compile. Keeping default optional still compiles.

Why Other Options Are Wrong:Error: No default value is specified — a default label is optional. Error: There is no break in each case — not a compile error. No error — incorrect because of case P:.

Common Pitfalls:Using variables in case labels; assuming default is mandatory; treating missing break as a compile error rather than a logic choice.

Final Answer:Error: Constant expression required at line case P:

More Questions from Control Instructions

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion