c语言中的重复定义问题?这样算吗 还是只有赋值了才算

这种叫重复定义吗?编译器还是可以运行的。

还是说只有第一次赋值了才叫重复定义呀

int main() {
int i;
if(2>1)
    int i=2; 

}

同一作用域内只允许定义一次,跟是否赋值无关。

int main() {
int i;
if(2>1)
    int i=2;
}

第二个int i作用域仅限于if内,不算重定义。if里i=2,出了if后i的值还是未初始化的随机值。

不算