2013-03-03 98 views
2

我剛開始學習C++。我碰到範圍解析操作符和我試過一個程序是這樣的範圍解析運算符如果存在三個變量

#include <iostream> 
using namespace std; 

int i = 40; 
int main(){ 
    int i = 20; 
    { 
     int i = 10; 
     cout<< ::i; // prints 40 
     cout<<i; // prints 10 
     cout << i; // how do i print variable i whose value is 20 
    } 
} 

但是如果我想訪問的main()內塊內的變量i(I = 20)。我怎麼做?可能嗎?這可能很愚蠢,但我不知道C++的所有內置函數。所以想找出是否有任何方法來做到這一點。謝謝

+1

我不認爲這是可能的。 – chris 2013-03-03 07:16:08

+2

我想這是不可能的。 – jrok 2013-03-03 07:18:09

+0

當你想要像這樣的變量時,有很少的情況。在這種情況下,當你也想引用外部變量時,絕對爲零。所以這就是爲什麼這是不可能的。 – Pubby 2013-03-03 07:19:24

回答

1

我認爲這可以使用namespaces完成。

#include <iostream> 
using namespace std; 
namespace inner{int i;} 
int i = 40; 
int main() { 
    inner::i = 20; 
    { 
     int i = 10; 
     cout<< ::i; // prints 40 
     cout<<i; // prints 10 
     cout << inner::i; // this prints 20 
    } 
} 

我希望這可以用於幾個i的代碼。

編輯答案更改程序的語義,因爲它使內部i一個全局變量。

+2

這改變了程序的語義,但是,'inner :: i'現在是全局的,它在本地之前。 – 2013-03-03 08:16:01

+0

我應該考慮刪除答案嗎? @StephenLin – 2013-03-03 09:06:25

+0

大概,它可以做到這一點混淆 – 2013-03-03 09:15:10

相關問題