【问题标题】:c++ weird scope in if statement [closed]c++ if语句中的奇怪范围[关闭]
【发布时间】:2021-04-03 20:01:18
【问题描述】:

当我在 if 语句中声明任何内容时,它不会传播出去使 if 语句的范围全球化。

【问题讨论】:

  • 它按设计工作。在要使用的范围内声明变量。
  • 您所描述的是语言的设计方式。如果你想做其他事情,或许可以举个例子说明你想写什么代码,它应该有什么效果。
  • 这里首先要了解的是变量范围。第二个要了解的是可变阴影

标签: c++ scope


【解决方案1】:

在内部范围内重新声明一个变量会创建一个新变量。

#include <iostream>

int main()
{
    int i = 1;

    if (true)
    {
        int i = 42;  // variable is re-declared
    } // lifetime of inner i ends here

    std::cout << i; // expected output 1  
    
}

您可以在内部范围内引用在外部声明的变量,而无需重新声明。

#include <iostream>

int main()
{
    int i = 1;

    if (true)
    {
        i = 42;  // variable from outer scope is used
    }

    std::cout << i; // expected output 42  
    
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多