if-else语句不带括号嵌套吗?



我想写一些非常荒谬的东西,它需要大量的条件嵌套。最不让人迷惑的编写方法是完全放弃括号,但是我没有找到任何关于嵌套单语句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)

——skippable传说——

潜在的难题(这是为了好玩)是我想要找出在常量时间内显示浮点数的内部表示而不舍入/截断所需的字形数量。在常数时间内计算小数部分的字形计数更简洁/更快,但不幸的是,我无法找出整数部分的任何位扭曲技巧,所以我决定只使用暴力。当你可以用拳头的时候,永远不要用数学。

From cppreference.com:

在嵌套if语句中,else与最近的没有else

的if相关联。

所以只要每个if都有一个else,没有括号的嵌套就可以工作得很好。当else不应该与最近的if相关联时,就会出现问题。例如:

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

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

最新更新