Проверка глобальной переменной?

0

Я ожидаю, что выход будет 10 Но я получаю 11 по моим знаниям, вызывая функцию fun, он должен принимать глобальную переменную. ??

#include <iostream>
using namespace first;
int var = 0;

void fun()
{
    cout << var;
}

int main()
{  
    var = 1;
    cout << var;
    fun();
}
  • 3
    Почему вы ожидаете 10 ?
  • 0
    Да, он использует глобальную переменную, которую вы изменили.
Показать ещё 3 комментария
Теги:
iostream

5 ответов

4
Лучший ответ

Вы переназначаете значение "var" равным 1, а затем дважды печатаете "var". поэтому вы получаете 11 в качестве вывода.

  • 0
    Как var внутри main () может обновить глобальный var ??
  • 1
    @ user3127386 var внутри main() является глобальной переменной.
Показать ещё 4 комментария
4

Вы только объявляете var один раз. Если вы затеняете глобальную переменную локальным объявлением, будет использоваться локальная переменная.

Например, см. qaru.site/questions/212579/... для получения информации о том, как работает затенение.

4
int main()
{  
    int var=1;
    cout<<var;
    fun();
}

На данный момент вы просто изменяете глобальный, а не создаете новую область с main().

Тогда ваш выход будет

10
2

После назначения 1 в var вы печатаете 2 раза одну и ту же переменную - обратите внимание, что вы не создаете 2 разных переменных, но вы меняете значение своей переменной.

  • 0
    Я не уверен, правильно ли я понял ваш пост, но он не объявляет другую переменную, просто изменяет значение глобальной переменной. В приведенном выше конкретном случае он не увидит 11 из-за конкретных используемых значений.
  • 0
    Да, я не видел, чтобы не было int до var = 1
-1

Var = 0 Затем var = 1 Печать var два раза Выход 11

  • 0
    Я думаю, что это скорее комментарий, чем ответ, однако вы можете добавить больше информации, чтобы сделать его ответом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню