Answer SL21


8 

Comments: There is a single external entity that corresponds to the idenfifier x. Both files file21A.c and file21C.c refer to that one entity. The linker "knows" to create just one variable x, which is initialized to 8.

When the executable program is loaded into memory and it is just about to run, there is just one x, which will hold a 32-bit 8.

Now foo() is called, and it sets its local variable x to 99, but this is a different entity than the external variable x, which continues to hold its 8.


/* --- file21A.c --- */
int x = 8;

/* --- file21B.c --- */
void foo()
{
  int x;
  x = 99;
}

/* --- file21C.c --- */
#include <stdio.h>
void foo();

int x;
void main()
{
  foo();
  printf("%d\n", x );
}


Back to Puzzle Home