c - 为什么可以在 C 中的循环内定义变量?

标签 c loops redefinition

为什么这段代码没有给出重新定义错误:

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 仍然保留其生命周期,并且它们位于同一范围内,因此这是一个重新定义错误。

关于c - 为什么可以在 C 中的循环内定义变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66185513/

相关文章:

c - 如何从tun接口(interface)接收数据到dpdk绑定(bind)的网卡?

c - 如何终止 fork 另一个进程的 MPI 程序

python - for循环迭代之间的延迟(python)

c++ - 在 C++ 中包含文件时重新定义函数(错误 LNK2005)

java - 获取 jstring/char * 的长度?

c - 尝试使用第三部分库 libmagic

python - 在 python 中重构生成器的第一次迭代

python - 在无限循环期间更新 Python 中的参数

c - 宏的重新定义不兼容

c++ - 函数重定义: const parameter