2013-12-22 109 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

我認爲這不是一個評論而不是一個答案,但是可以添加更多信息以使其成爲答案。 –