2013-03-30 5 views
0

Что будет делать программа ниже?Нужна ясность ниже программы,

#include <iostream> 
using namespace std;  

static int x = 10; 

void main1()  
{  
    cout << x << endl;  
    x = x + 1;  
}  

int main() 
{  
    main1();  
    main1();   
    cout << x << endl;  
} 

Согласно моему пониманию, приведенным выше программе мы использовали статические переменные, так x сохраняет последнюю инициализированному переменную. Таким образом, выходной сигнал будет

10  
11  
12 

но если мы удалили статичны, мы должны получить

10  
10  
10 

, но я получаю ниже выход, даже после снятия статического.

10  
11  
12 

Пожалуйста, помогите мне разобраться.

+2

Почему вы думаете, что удаление 'static' будет иметь значение? –

+2

Переменная 'x' является глобальной. – soon

ответ

7

Даже если int x не статична, она по-прежнему является глобальной переменной, выходит за рамки main и main1.

Таким образом, все изменения, внесенные вами в x из любого места внутри этого файла, будут постоянно меняться.

+2

Напоминание: единственное, что меняется, когда вы удаляете 'static', - это видимость компоновщика этой переменной. –

+0

спасибо каждому за ваше время, понятному после нескольких примеров – satish

0

Поскольку x является глобальным видимым как для main1, так и для основного, он не будет иметь значения, является ли статический или нет.

Смежные вопросы