int
i=10;
main()
{
extern
int i;
{
int i=20;
{
const volatile unsigned i=30;
printf("%d",i);
}
printf("%d",i);
}
printf("%d",i);
}
Answer:
30,20,10
Explanation:
'{' introduces new
block and thus new scope. In the innermost block i is declared as,
const volatile unsigned
which is a valid
declaration. i is assumed of type int. So printf prints 30. In the next block,
i has value 20 and so printf prints 20. In the outermost block, i is declared
as extern, so no storage space is allocated for it. After compilation is over
the linker resolves it to global variable i (since it is the only variable visible
there). So it prints i's value as 10.
Blog Author: Vijay Kumar
Go to: Java Aptitude
No comments:
Post a Comment