为什么可以在 C 中的循环内定义变量?
Why is it possible to define a variable inside a loop in C?
为什么这段代码没有给出重定义错误:
int main(void)
{
for (int i = 0; i < 2; i++)
{
int number = 5;
}
}
而这段代码:
int main(void)
{
int number = 5;
int number = 5;
}
基本上,在循环内创建变量将使变量的作用域停留在这个循环中。 “数字”在您的循环之外不存在。
在第一段代码中,number
的范围从执行到for循环开始时开始,到执行到for循环结束时结束。在这种情况下,for循环体被执行了两次,number
被创建和销毁了两次,并且有两个不相交的作用域。在第二个代码中,范围不是不相交的,因为之前的 number
在定义第二个代码时仍然坚持它的生命周期,并且它们在同一范围内,所以这是一个重新定义错误。
Redfinition 错误是编译时问题,而不是运行时问题。您不会在循环中遇到重定义错误,因为您在该范围内只有一个 number
声明。
在第二个片段中,您在同一范围内有两个 number
的声明,因此出现错误。
为什么这段代码没有给出重定义错误:
int main(void)
{
for (int i = 0; i < 2; i++)
{
int number = 5;
}
}
而这段代码:
int main(void)
{
int number = 5;
int number = 5;
}
基本上,在循环内创建变量将使变量的作用域停留在这个循环中。 “数字”在您的循环之外不存在。
在第一段代码中,number
的范围从执行到for循环开始时开始,到执行到for循环结束时结束。在这种情况下,for循环体被执行了两次,number
被创建和销毁了两次,并且有两个不相交的作用域。在第二个代码中,范围不是不相交的,因为之前的 number
在定义第二个代码时仍然坚持它的生命周期,并且它们在同一范围内,所以这是一个重新定义错误。
Redfinition 错误是编译时问题,而不是运行时问题。您不会在循环中遇到重定义错误,因为您在该范围内只有一个 number
声明。
在第二个片段中,您在同一范围内有两个 number
的声明,因此出现错误。