int a; int f() { int a; // Undefined variable b // printf("f 0: a = %d b = %d\n", a, b); printf("f 0: a = %d\n", a); a = 2; printf("f 1: a = %d\n", a); } int g(int a) { printf("g 0: a = %d\n", a); a = 3; printf("g 1: a = %d\n", a); } int h(int a) { // int a; // gcc 4.3 says error: 'a' redeclared as different kind of symbol printf("h 0: a = %d\n", a); a = 4; printf("h 1: a = %d\n", a); } // Already defined global // int h() {} int globCheck() { fprintf(stdout, "globCheck()\n"); } int fwdCheck() { b(); // Undefined forward reference // c(); } int b() { printf("b()\n"); } int nested() { int a; printf("nested 0: a = %d\n", a); a = 50; printf("nested 1: a = %d\n", a); { int a; printf("nested 2: a = %d\n", a); a = 51; printf("nested 3: a = %d\n", a); } printf("nested 4: a = %d\n", a); } int main() { globCheck(); fwdCheck(); printf("main 0: a = %d\n", a); a = 5; printf("main 1: a = %d\n", a); f(); printf("main 2: a = %d\n", a); g(77); printf("main 3: a = %d\n", a); h(30); printf("main 4: a = %d\n", a); nested(); printf("main 5: a = %d\n", a); return 0; }