我思念写使用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
?他们是一个特殊的规则?
我思念写使用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
?他们是一个特殊的规则?
在内部作用域中,变量声明会覆盖以前的任何声明。在您的代码示例中,输出将是每个循环迭代中的ch
的值。
如果您要在内部for外输出i
的值,则输出将是在第一个for循环中声明的i
的值。
名称查找规则(C++ 11 3.4,尤其是3.4.1)涵盖了这一点。但是,3.3.10(名称隐藏)是相关的。 –