gpt4 book ai didi

c++ - 范围内变量的重新定义

转载 作者:太空狗 更新时间:2023-10-29 20:23:39 24 4
gpt4 key购买 nike

为什么以下代码在 g++ 下编译时没有任何警告或错误?我看到的问题是第一行中定义的变量 x 可以在 if 范围内访问,但尽管它再次被重新定义。

int main() {
int x = 5;
std::cout << x;
if (true) {
int x = 6;
std::cout << x;
}
}

最佳答案

根据 C-

6.2.1 in C99:

If the declarator or type specifier that declares the identifier appears inside a block or within the list of parameter declarations in a function definition, the identifier has block scope, which terminates at the } that closes the associated block

...

If an outer declaration of a lexically identical identifier exists in the same name space, it is hidden until the current scope terminates, after which it again becomes visible.

在 C 和 C++ 中,在多个范围内使用相同的名称是合法的。

因此在您的代码中,之前的 i 保持隐藏,直到 if 语句的范围终止。

关于c++ - 范围内变量的重新定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31937132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com