2014-05-05 147 views
0

我思念写使用i我的变量名,两个变量,一个是int和其他Uint16像这样:两个变量具有相同的名称

for(int i = 0; i <= 5; i++) { 
    for(Uint16 ch = 5; ch < 20; ++ch) { 
     Uint16 i = ch; 
     //Some code 
     cout << i; 
    } 
} 

使用铛86 5.1它编译,但是会显示哪个i?他们是一个特殊的规则?

+1

名称查找规则(C++ 11 3.4,尤其是3.4.1)涵盖了这一点。但是,3.3.10(名称隐藏)是相关的。 –

回答

1

在内部作用域中,变量声明会覆盖以前的任何声明。在您的代码示例中,输出将是每个循环迭代中的ch的值。

如果您要在内部for外输出i的值,则输出将是在第一个for循环中声明的i的值。

+0

你可否提供任何资料来源? –

+0

呃?你张贴了一些资料。 –

+0

http://en.wikipedia.org/wiki/Variable_shadowing – tomahh

相关问题