如何在 C++17 中使用带有初始值设定项的“else-if”?

用户5406764

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++ 没有“else if”语句。相反,它是一个单独的else语句,后跟一个单独的if语句。

一条链子

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

相当于

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 C++ 中使用带有类初始值设定项参数的 typedef?

如何在 C# 中的对象初始值设定项中使用 Console.ReadLine()

C++17 if 语句带初始值设定项,初始值设定项分配 nullptr,如何处理条件?

如何在带有初始值设定项的构造函数中使用 vprintf/cstdarg 功能?

将来会支持非平凡的指定初始值设定项吗(Post C ++ 17)?

C# 集合初始值设定项如何工作?

从C ++ 17之前的初始值设定项推导的std :: vector类型... C ++ 11的任何解决方法?

如何在C ++ 17中使用CERN Root?

如何在 LinearGradient 初始值设定项中使用变量 - SwiftUI

如何在 C++ 构造函数初始值设定项列表中初始化非内置类型的数组?

未使用的默认成员初始值设定项如何改变 C++ 中的程序行为?

带有可变长度尾部的普通“C”静态初始值设定项宏。

带有双花括号的 C++ queue<string> 初始值设定项列表

如何通过C ++中的函数参数传递固定大小的初始值设定项列表的初始值设定项列表?

在C#构造函数初始值设定项中使用默认属性值

C++11:auto 如何处理 () 初始值设定项?

如何修复“无法在属性初始值设定项中使用实例成员‘textField_1’;属性初始值设定项在‘self’可用之前运行”?

如何在打字稿中使用 bigint 初始值设定项创建类似枚举的对象?

如何使用Clang-AstMatcher获取所有构造函数的初始值设定项?

如何在CMake中启用C ++ 17

如何在Netbeans中启用C ++ 17?

如何在 C++ 初始值设定项列表中将常量引用成员初始化为另一个成员(标准向量)

如何使用新的C ++ 17执行策略?

使用对象初始值设定项时如何在列表中添加值?

C是否允许在数组初始值设定项列表中使用非常量表达式?

在 C 中使用位移但不加或减时出现“错误:初始值设定项不是常量”

C ++ 17:如何在并行STL中获取工作项的索引

如何在指定的初始值设定项中调用协议扩展初始值设定项?

如何在带有-std = c ++ 17的g ++ 6.2.0中包括C ++ 17头文件(可选,任意,string_view,变体)