I thought I had understood how to properly increment a value in C until I ran this piece of code. As we see from the output, static_var keeps on getting incremented. That is not the case, however, with var. I would think that var should keep on getting incremented by 1 each time as well.
If I were to change int var
to static int var
, then var
does keep on getting incremented. Maybe I'm not thinking correctly. If someone could clear this up as to "why" var does not keep on getting incremented each, that would be fantastic!
#include <stdio.h>
void function() {
int var = 5;
static int static_var = 5;
printf("\t[in function] var = %d\n", var);
printf("\t[in function] static_var = %d\n", static_var);
var++;
static_var++;
}
int main() {
int i;
static int static_var = 1337;
for(i=0; i < 5; i++) {
printf("[in main] static_var = %d\n", static_var);
function();
}
}
OUTPUT:
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 5
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 6
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 7
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 8
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 9