C declarations: which of the following declarations is syntactically correct and defines an object?

Difficulty: Easy

Correct Answer: int length;

Explanation:

Introduction / Context:Correctly forming declarations is foundational in C. A declaration must present a valid type specifier sequence followed by one or more declarators (identifiers, possibly with pointers, arrays, or function forms).

Given Data / Assumptions:

  • We are judging syntax only, not storage duration or initialization.
  • Each candidate is a standalone declaration.

Concept / Approach:Valid type specifiers can be combined in restricted ways (e.g., long int is valid, but int long; without an identifier is incomplete). A declaration also requires an identifier unless it is a typedef or a function prototype. Here, only “int length;” supplies both a valid type and an identifier.

Step-by-Step Solution:Option (a): type int and identifier length → valid object declaration.Option (b): “char int;” mixes two base types and lacks an identifier → invalid.Option (c): “int long;” reversed order without identifier; even “long int;” would still lack an identifier → invalid.Option (d): “float double;” two base types together, no identifier → invalid.Option (e): “long signed;” incompatible specifier sequence and no identifier → invalid.

Verification / Alternative check:Compilers accept (a) but reject the others with messages about expected identifiers or invalid type specifiers.

Why Other Options Are Wrong:They either combine incompatible base types or omit an identifier, violating declaration syntax.

Common Pitfalls:Providing only a type without an identifier; mixing multiple base types that cannot appear together.

Final Answer:int length;

Discussion & Comments

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