gpt4 book ai didi

c++ - 在 if...else 语句中嵌入 case 标签

转载 作者:可可西里 更新时间:2023-11-01 18:27:19 32 4
gpt4 key购买 nike

G++ 接受此代码并且它的行为符合我的预期:

#include <cassert>

void example (int value, bool condition) {

switch (value) {
case 0:
if (condition) {
case 1:
assert(condition || value == 1);
} else {
assert(!condition && value == 0);
}
assert(value == 0 || value == 1);
}

}

int main () {
example(0, false);
example(1, false);
example(0, true);
example(1, true);
}

也许这是一个愚蠢的基本问题,但撇开代码的味道不谈,将 case 标签放在 if...else block 中是否有效 C++,并且会当通过 case 1?

输入时,所有行为良好的编译器都会正确生成将跳过 else block 的代码

最佳答案

就 C++ 而言(草案 N3936):

  • case 和 default 标签本身不会改变控制流,在这些标签中继续畅通无阻
  • 通常,作为 switch 主题的子语句是复合的,并且 case 和 default 标 checkout 现在(复合)子语句中包含的顶级语句上,但这不是必需的。( § 6.4.2 - 6)
  • 可以转移到一个 block 中,但不能以绕过初始化声明的方式进行。 (§ 6.7 - 3)

你所做的在技术上是可以的,当然这并不意味着你应该这样做。

关于c++ - 在 if...else 语句中嵌入 case 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22774681/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com