首页 > 解决方案 > 如何在 C++17 中将“else-if”与初始化程序一起使用?

问题描述

cpp 参考https ://en.cppreference.com/w/cpp/language/if ,看来我不能这样做:

if (cond)
{}
else if (init; cond)  // <<--- init not allowed with "else if"
{}

我以一种相当愚蠢的方式绕过它:

if (cond)
{}
else if ([]() -> bool
{
    init;
    if (cond)
    {
        // Do something in the same scope as 'init'
        return true;
    }
    return false;
}())
{}

我是否在这里遗漏了一些关于如何使用 C++17“正确”执行此操作的明显内容?

标签: c++if-statementlambdac++17

解决方案


C++ 没有“else if”语句。相反,它是一个单独的else语句,然后是一个单独的if语句。

像一条链子

if (cond1)
{
    ...
}
else if (cond2)
{
    ...
}

相当于

if (cond1)
{
    ...
}
else
{
    if (cond2)
    {
        ...
    }
}

所以使用else if (init; cond)应该是可以做到的。


推荐阅读