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)
--可跳过的传说--
潜在的难题(这是为了好玩)是我想找出在恒定时间内显示浮点数内部表示而无需舍入/截断所需的字形数量。在恒定时间内计算小数部分的字形计数要整洁/快得多,但不幸的是,我无法找出整数部分的任何位操作技巧,因此我决定对其进行暴力破解。当你可以使用你的拳头时,永远不要使用数学。
在嵌套的 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)
快速扫描您的代码看起来没问题。