C++中如何跳过if语句执行且避免额外代码缩进?
在C++中实现需求的方案
可以实现,这里提供两种不增加额外缩进、符合要求的方案:
方案一:使用goto语句
虽然goto常被误解,但在这种需要跳过局部代码块的场景下,它是简洁且合规的用法,不会造成代码混乱:
if (foo()) { if (bar()) goto skip_buz; buz(); skip_buz:; } // 标记为[¹]的后续代码正常执行
当bar()返回真时,代码会跳转到skip_buz标签的位置,直接跳过buz()的执行,完全不影响外层if之后的逻辑。
方案二:用do-while(0)构建单次循环
把需要控制的代码块放进do-while(0)循环(这个循环只会执行一次),这样就能用continue或break跳过剩余代码:
if (foo()) { do { if (bar()) break; // 用continue效果完全相同 buz(); } while (0); } // 标记为[¹]的后续代码正常执行
do-while(0)保证代码块仅运行一次,当bar()为真时,break/continue会直接跳出这个单次循环,从而跳过buz(),同时不会影响后续代码的执行。
内容的提问来源于stack exchange,提问作者Samuel
相关产品推荐
相关产品推荐

