C enumerations: choose the correct statement about scope, values, and size control.

C Programming Structures, Unions, Enums Difficulty: Easy
Choose an option
  • A
    You must explicitly assign numeric values to every enumeration constant
  • B
    You can directly control the stored size of an enumeration variable
  • C
    An enumeration can be declared with block scope so its effect is local to that block
  • D
    All enumerations are global across the entire translation unit
  • E
    Enumeration constants must always start from 1 by default

Answer

Correct Answer: An enumeration can be declared with block scope so its effect is local to that block

Explanation

Introduction / Context:Enumerations (enum) in C define named integer constants. This question checks understanding of default values, scope, and whether the programmer can control the storage size of enum types directly.

Given Data / Assumptions:

  • Standard C behavior for enums.
  • Default enumeration values and scope rules apply.

Concept / Approach:By default, the first enumerator is 0 and subsequent ones increase by 1 unless you explicitly assign values. Enums can be declared at file scope or block scope. The underlying type is implementation-defined; the programmer cannot portably force its size in classic C versions.

Step-by-Step Solution:1) Check A: C allows explicit assignments but does not require them, so A is wrong.2) Check B: You cannot portably fix enum storage size; B is wrong.3) Check C: Enums can be defined inside a block; the identifiers then have block scope — this is correct.4) Check D: Not all enums are global; scope depends on where they are declared — D is wrong.5) Check E: Default starts from 0, not 1 — E is wrong.

Verification / Alternative check:Write a small program with an enum inside a function; its identifiers are not visible outside that block.

Why Other Options Are Wrong:Option A: Explicit assignment is optional.
Option B: Underlying type is implementation-defined; no portable direct control.
Option D: Scope is not automatically global.
Option E: Default start is 0, not 1.

Common Pitfalls:Assuming enums always start at 1 or thinking they create global names automatically is a frequent misconception.

Final Answer:An enumeration can be declared with block scope so its effect is local to that block.

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