【发布时间】:2021-04-03 20:01:18
【问题描述】:
当我在 if 语句中声明任何内容时,它不会传播出去使 if 语句的范围全球化。
【问题讨论】:
-
它按设计工作。在要使用的范围内声明变量。
-
您所描述的是语言的设计方式。如果你想做其他事情,或许可以举个例子说明你想写什么代码,它应该有什么效果。
-
这里首先要了解的是变量范围。第二个要了解的是可变阴影。
当我在 if 语句中声明任何内容时,它不会传播出去使 if 语句的范围全球化。
【问题讨论】:
在内部范围内重新声明一个变量会创建一个新变量。
#include <iostream>
int main()
{
int i = 1;
if (true)
{
int i = 42; // variable is re-declared
} // lifetime of inner i ends here
std::cout << i; // expected output 1
}
您可以在内部范围内引用在外部声明的变量,而无需重新声明。
#include <iostream>
int main()
{
int i = 1;
if (true)
{
i = 42; // variable from outer scope is used
}
std::cout << i; // expected output 42
}
【讨论】: