gpt4 book ai didi

c++ - 令人困惑的 switch 语句行为

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:16 25 4
gpt4 key购买 nike

我看到这段代码,我希望输出为 6,但我得到了 17。

int x = 3;
switch (x)
{
case 1: { x += x; }
case 3: { x += x; }
case 5: { x += x; }
default: { x += 5; }
}
std::cout << x;

为什么x变成了17?选择case 3退出switch语句不就变成6了吗?

即使它会在情况 3 之后通过默认情况,x 也只会是 11。我看到 x 会变成 17 的唯一方法是通过案例 (1 & 3) 或 (3 & 5) + 默认案例。不过,我不明白为什么它会那样工作。

关于正在发生的事情的任何方向都会很棒!

最佳答案

当您在 switch case 语句中不使用 break 时,代码不会在匹配的 case 评估处停止,而是继续执行下面的所有其他 case 语句直到找到 breakswitch 语句完成。

在此示例中,第一个匹配案例针对 x == 3 执行,然后继续执行以下所有语句,结果为 17

您可以在此处阅读有关此原因的更多信息:

关于c++ - 令人困惑的 switch 语句行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38049655/

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