Does this compile without error?
int main()
{
int k;
{
int k;
for (k = 0; k < 10; k++);
}
}
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.
Please log in or register to report this question.