是否可以在“ if”语句中声明变量?

时间:2019-11-25 03:50:08

标签: c++ variable-declaration

我想在“ if”语句内声明一个变量,并在“ if”语句后对该变量做一些事情。这是我的简化代码:

#include <iostream>
using namespace std;

int main() {
    int a;
    cin >> a;

    if (a==1)
        string b;
    else
        int b;

    cin >> b;
    //and some long codes using variable b
} 

是否可以这样做?通过使用相同的变量名称,如何声明具有不同数据类型(在不同条件下)的变量?

1 个答案:

答案 0 :(得分:1)

不。 在任何本地代码块中声明的变量都不能具有全局作用域。变量在声明它的块中是本地的。

但是您可以考虑将函数用于“ long_code_block_using_b”,该函数在与要声明的变量相同的块内调用  如果对所有数据类型都执行相同的操作,则可以再次使用功能模板,如下所示。

#include <iostream>
using namespace std;

template <typename T>
T long_code_using_variable_b()
{
    T b;
    cin >> b;
    //and some long codes using variable b
    return b;
}
int main() {
    int a;
    cin >> a;

    if (a==1)
        cout << long_code_using_variable_b<string>();
    else
        cout << long_code_using_variable_b<int>();

 }