top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

How the variable is identified by compiler.

+3 votes
215 views
int main()
{
      int i = 10;
      {
              int i = 25;
              printf("%d\n",i);
       }
       printf("%d\n",i);
       return 0;
}

How does compiler differentiate both "i" ;

posted Oct 13, 2013 by Anuj Yadav

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

1 Answer

0 votes

While compiling the program, during analyzing syntax, compiler checks the { braces. Opening and { and closing } is treated as scope and store in text section of binary. So while executing instruction takes care of block scope.

answer Oct 13, 2013 by Vikram Singh
Similar Questions
+5 votes

Even I have similar problem:

int (*pfun)(void);
int *pInt = 0;
void fun1()
{
    int i = 5; /* Local to fun1*/

    printf("Outer function");
    pInt = &i; /* As I know address of local variable is valid till function execution */

    int fun2()
    {
      printf("innerfunction");
      printf("%d", *pInt);
    }
    /* fun2 address assign to pfun so that It can be called even after completion of fun1 */
    pfun = fun2;
}

int main()
{
    fun1();
    pfun();
    return 0;
}

Can someone please explain ? I am getting *pInt value 5.

+2 votes

I assume that constant must be initialized to a constant value at compile time, but following code the return value of ge_const() is assigned to x which will be collected at run time. So this must cause an error but I am getting the output as 50. Can someone clarify the detail?

main()
{
    const int x = get_const();
    printf("%d", x);
}
int get_const()
{
    return 50;
}
...