我想在“ 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
}
是否可以这样做?通过使用相同的变量名称,如何声明具有不同数据类型(在不同条件下)的变量?
答案 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>();
}