gpt4 book ai didi

C++ 变量作用域

转载 作者:行者123 更新时间:2023-11-30 02:01:28 25 4
gpt4 key购买 nike

我是 c++ 的新手,遇到了这个:

    for (int i=0 ; i<500 ; i++) {
//to do
}

int i;
std::cin >> i;

更新:使用 visual studio 2010(及其使用的编译器),for 循环外的 i 在调用 cin >> i 后的值为 500;我正在使用 Visual Studio 调试器查看这些值 <<(这就是问题 - 感谢 Greg)

现在我期待

a) 整数 i;在 for 循环和 int i=0 之外;是不同的变量,即 for 循环 i 在大括号闭合后超出范围

b) 一旦我意识到它没有超出范围,我想知道为什么它没有被 cin 覆盖。

我认为 b) 是故意的(虽然我很难在 Bjarne Stroustrup 的 c++ 书中找到它所在的页面)但我确信它在同一本书中指出变量在它们所包含的大括号内具有范围。

在大多数其他语言中,我知道在 for 结构中声明变量时,它们被认为是在 for 循环的大括号中,但在 c++ 中,情况似乎并非如此。

是这种情况吗?这是否特定于 for 循环,或者是否有任何其他情况会发生这种情况(我想不出任何其他情况,但嘿,我是新手)

谢谢

最佳答案

在某些情况下,尤其是在同一个函数中有两个同名的不同变量的情况下,您不能总是相信调试器会为您提供正确的信息。如果您要求 i 的值,调试器可能不知道到底是哪个 i你指的是。根据您的描述,听起来编译器为 i 的每个不同实例分配了两个不同的内存位置。 .

我经常使用原则有疑问时,打印更多。如果你使用 std::cout << i ,那么您应该会看到 i实际值这在您打印输出时的范围内。

关于C++ 变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14068432/

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