c++ - 是否可以在 "if"语句中声明一个变量?

标签 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
} 

这有可能吗?我应该怎么做才能通过使用相同的变量名来声明具有不同数据类型(在不同条件下)的变量?

最佳答案

没有。 在任何本地代码块中声明的变量不能具有全局范围。变量在声明它的 block 中是局部的。

但您可以考虑使用“long_code_block_using_b”的函数,您在声明的变量所在的同一 block 内调用这些函数 同样,如果您对所有数据类型执行相同的操作,则可以使用如下函数模板。

#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>();

 } 

关于c++ - 是否可以在 "if"语句中声明一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59025011/

相关文章:

c++ - c中如何获取进程ID,getpid()没有实现

c - 大小为 LONG_MAX 的数组

C 指向数组/指针数组的指针消歧

vba - 隐藏变量声明 VBA

c++ - 为什么这个 move 构造函数不起作用

C++:此代码编译,但抛出运行时检查失败 #2 - 变量 'num' 周围的堆栈已损坏。发生

c++ - 尝试修改 sqlite3 插入以返回 PK。不确定如何具体使用 sqlite3

c++ - f() 按值返回对象的 "auto&& a= f();"中 a 的生命周期是多少?

swift - 如何根据三元表达式声明变量类型?

c++ - 快速检查 C++ 中的递增/递减运算符