In C you can define a variable in the block. The
blocks are marked using { and } braces. The blocks can also be defined using
the for statement. The scope of the variable is in the
block in which it is declared, meaning that you can use that variable anywhere
in the block. Even if some block is declared in that block, you can use that
variable. When the variable is referred in the block and if it can be resolved
using two definitions, then the nearest definition has more precedence. So the
variable is interpreted according to the nearest definition. Even if the two
definitions define two different data types for variables, they are accepted.
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.
- Statement B defines variable
i which is entirely in 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.
Points to Remember
- In C, you can define
variables in the block, which is demarcated by using { and } braces. The
variable has the scope inside the block in which it is declared.
- When the variable is
resolved using two definitions, the nearest definition has more
precedence.
In C, you
can define the counter in the for loop
itself; the counter has scope up to the end of the for loop.
Program
#include <stdio.h>
main()
{
int k =
10;
}
for(int i=0;i<2;i++)\\ A
{ \\ B
printf("value of i is %d\n",i); \\ C
} \\ D
{
printf("the value of i is %d\n",i); \\ E
}
Explanation
- The counter variable i is defined at statement A.
- The scope of the for loop is up to statement D,
which is the end of the for
loop for statement B.
- If you do not comment out
statement E, you will get an error, because you cannot refer i in the outside block.
Point to Remember
You can
define counter variable inside the for loop.