Program
#include <stdio.h>
main()
{ \\ Block 1
int i = 10; \\ A
{ \\ Block 2
int i = 0; \\ B
for( i=0;i<2;i++) \\ C
{
printf("value of i is %d\n",i);
} \\ End of block 2
}
printf("the value of i is %d\n",i); \\ D
} \\ End of block 1
Explanation
- The statement block 1 defines the start of block 1.
- The statement ‘end of block 1’ defines the end of block 1.
- Statement A defines variable i which has the scope in the entire block 1.
- The statement block 2 defines the start of block 2.
- The statement ‘end of block 2’ defines the end of block 2.
- The for loop refers i, which can be resolved using two definitions: statement A and statement B.
- Since the definition of statement B is nearest, the variable is referred using that definition, so the for loop modifies the value of i at statement B.
- Variable i at statement A and variable i at statement B are two independent variables even though they have the same name. Statement D is outside block 2, so it prints the value of variable i in block 1
No comments:
Post a Comment