我期待的输出是10 但我得到11 根据我的知识,同时调用fun函数,它应该采取 全局变量。 ??全局变量验证?
#include <iostream>
using namespace first;
int var = 0;
void fun()
{
cout << var;
}
int main()
{
var = 1;
cout << var;
fun();
}
我期待的输出是10 但我得到11 根据我的知识,同时调用fun函数,它应该采取 全局变量。 ??全局变量验证?
#include <iostream>
using namespace first;
int var = 0;
void fun()
{
cout << var;
}
int main()
{
var = 1;
cout << var;
fun();
}
你“变种”的值重新分配到1,然后打印“变种”两次。这就是为什么你得到11作为输出。
main()里面的var怎么能更新全局变量? – user3127386
@ user3127386 main()里面的'var' * *是全局变量。 – juanchopanza
@juanchopanza所以你的意思是我们可以从任何类型的局部范围更新全局变量? – user3127386
您只声明var
一次。如果通过局部声明来映射全局变量,将使用局部变量。
例如,有关阴影如何工作的信息,请参阅this StackOverflow post。
int main()
{
int var=1;
cout<<var;
fun();
}
目前,您只是修改全局,而不是创建一个新的范围在main()
作用域。
然后你的输出就会
10
将1
分配到var
后,您打印2次相同的变量 - 请注意,您并未创建2个不同的变量,但您要更改变量的值。
我不确定我是否正确地发布了你的帖子,但他没有声明另一个变种,只是改变全局变量的值。在上面的具体情况中,由于使用了具体的值,他不会看到11。 –
是的,我没有看到var = 1之前没有int int – enedil
瓦尔= 0 然后VAR = 1个 打印变种两次 输出11
我认为这不是一个评论而不是一个答案,但是可以添加更多信息以使其成为答案。 –
你为什么想到'10'? –
是的,它使用您修改的全局变量。 – chris
为什么我不能得到10? – user3127386