Monday 18 March 2013

Three same variables in program


    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