LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

вот вам пример:

я просто переименовал вашу a в aa, и выкинул мусор.

#include <stdio.h>
int main (void) {
    int aa = 400;
    printf ("A0 = %d \n",aa);
    {
        float a = -3.7;
        printf ("A1 = %f\n",a);
    }
    printf ("A2 = %d \n", aa); /// выведет 200
    printf ("A3 = %f \n", aa); /// выведет -3.7
return 0;
}

принтует -

A0 = 400 
A1 = -3.700000
A2 = 400 
A3 = -3.700000 

пересечений по именам нет. есть неверный вызов последнего print. и он принтует мусор, поскольку ему предложили печатать float от инта. адрес aa(int) - [bp-4], адрес a(float) - [bp-8].

итак, блоки тут вообще не причем.

Исходная версия alysnix, :

вот вам пример:

я просто переименовал вашу a в aa, и выкинул мусор.

#include <stdio.h>
int main (void) {
    int aa = 400;
    printf ("A0 = %d \n",aa);
    {
        float a = -3.7;
        printf ("A1 = %f\n",a);
    }
    printf ("A2 = %d \n", aa); /// выведет 200
    printf ("A3 = %f \n", aa); /// выведет -3.7
return 0;
}

принтует -

A0 = 400 
A1 = -3.700000
A2 = 400 
A3 = -3.700000 

пересечений по именам нет. есть неверный вызов последнего print. и он принтует мусор, поскольку ему предложили печатать float от инта. адрес aa(int) - [bp-4], адрес a(float) - [bp-8].

итак, блоки тут вообще не причем.