Machine-translated by Google. Questions are authored in English.
Top

Discussion

Does this compile without error?

int main()
{
int k;
{
int k;
for (k = 0; k < 10; k++);
}
}

  • A.Yes
  • B.No
  • C.Depends on the compiler
  • D.Depends on the C standard implemented by compilers

Answer: A

Correct answer: Yes

The inner braces open a new block, and a declaration in an inner block may reuse a name from an outer one - the inner k simply shadows the outer for the extent of that block. It is legal, though the shadowing is a common source of confusion and most compilers will warn about it.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.