2013-12-22 58 views
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

是的,它使用您修改的全局变量。 – chris

+0

为什么我不能得到10? – user3127386

回答

4

你“变种”的值重新分配到1,然后打印“变种”两次。这就是为什么你得到11作为输出。

+0

main()里面的var怎么能更新全局变量? – user3127386

+1

@ user3127386 main()里面的'var' * *是全局变量。 – juanchopanza

+0

@juanchopanza所以你的意思是我们可以从任何类型的局部范围更新全局变量? – user3127386

4

您只声明var一次。如果通过局部声明来映射全局变量,将使用局部变量。

例如,有关阴影如何工作的信息,请参阅this StackOverflow post

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

目前,您只是修改全局,而不是创建一个新的范围在main()作用域。

然后你的输出就会

10 
2

1分配到var后,您打印2次相同的变量 - 请注意,您并未创建2个不同的变量,但您要更改变量的值。

+0

我不确定我是否正确地发布了你的帖子,但他没有声明另一个变种,只是改变全局变量的值。在上面的具体情况中,由于使用了具体的值,他不会看到11。 –

+0

是的,我没有看到var = 1之前没有int int – enedil

-1

瓦尔= 0 然后VAR = 1个 打印变种两次 输出11

+0

我认为这不是一个评论而不是一个答案,但是可以添加更多信息以使其成为答案。 –