I am learning about global variables in C using book C programming a modern approach.
Below is given an example from the book why using same global variable for multiple functions is bad idea.
I don't understand why function print_all_rows
executes function print_one_row
only once.
Let's say I call first function print_one_row
and then function print_all_rows
.
At the beginning of program i
is set to 0 by default by compiler. Once program finishes execution of print_one_row
function the value of i
is 11.
Program enters into function print_all_rows
, sets i
to 1, calls function print_one_row
and then increments i
to 12 instead of 2.
Why is it incrementing i
to 12 and not to 2 if I changed the value of i
to 1?
int i;
void print_one_row(void)
{
for (i = 1; i <= 10; i )
printf ("*" ) ;
}
void print_all_rows(void) {
for (i = 1; i <= 10; i ) {
print_one_row();
printf ("\n") ;
}
}
CodePudding user response:
In print_all_rows
, just before the first call to print_one_row
, i
has the value of 1.
Then print_one_row
is called. When that function returns, i
has the value of 11. Then the loop increment in print_all_rows
is evaluated which increments i
from 11 to 12, then the condition is evaluated which is false, then print_all_rows
returns.
CodePudding user response:
Because i
is glocal variable (common for both functions) and its value is 11
after first call of print_one_row
. With this value (11) the second iteration of for
loop in print_all_rows
exits and there are no more calls of print_one_row
.