if-else 语句会在没有括号的情况下嵌套吗?

Ann*_*inn 0 c c++ if-statement

我想写一些非常荒谬的东西,需要非常深的条件嵌套。写这个最不迷惑的方法是完全放弃括号,但我无法找到任何关于嵌套单语句 if-else 守卫是否合法的信息;非嵌套版本似乎给人们带来了足够的问题。

写以下内容是否有效?(在 C 和 C++ 中,如果他们对此有所不同,请告诉我。)

    float x = max(abs(min), abs(max));
    uint32 count = 0u;

    // divides and conquers but, tries to shortcut toward more common values

    if (x < 100'000.f) 
        if (x < 10.f) 
            count = 1u;
        else
            if(x < 1'000.f)
                if (x < 100.f) 
                    count = 2u;
                else
                    count = 3u;
            else 
                if (x < 10'000.f) 
                    count = 4u;
                else
                    count = 5u;
    else 
        ... // covers the IEEE-754 float32 range to ~1.0e+37 (maybe 37 end branches)
Run Code Online (Sandbox Code Playgroud)

--可跳过的传说--

潜在的难题(这是为了好玩)是我想找出在恒定时间内显示浮点数内部表示而无需舍入/截断所需的字形数量。在恒定时间内计算小数部分的字形计数要整洁/快得多,但不幸的是,我无法找出整数部分的任何位操作技巧,因此我决定对其进行暴力破解。当你可以使用你的拳头时,永远不要使用数学。

JaM*_*MiT 5

cppreference.com

在嵌套的 if 语句中,else 与最接近的 if 没有 else 相关联

因此,只要每个if都有一个else,不带括号的嵌套就可以正常工作。当 aelse不应与最接近的if. 例如:

    if ( condition1 ) {
        if ( condition2 )
            DoSomething();
    } // <-- This is needed so the else goes with the intended if.
    else
        DoOtherThing();
Run Code Online (Sandbox Code Playgroud)

快速扫描您的代码看起来没问题。