gpt4 book ai didi

C - Tricky Switch Case 工作..!

转载 作者:行者123 更新时间:2023-12-04 19:48:22 26 4
gpt4 key购买 nike

各位,

最近开始学习C。
卡在一个点上。它是关于 switch-case 语句的工作。

代码如下:

#include<stdio.h>

int main() {
int i=4;
switch(i) {

default :
printf("%s","Default");
case 0:
printf("%s","Case 0");
case 1:
printf("%s","Case 1");
case 2:
printf("%s","Case 2");

return 0;
}
}

我个人认为,应该打印“Default”,因为它与任何大小写值都不匹配。
但是当我在 Turbo C 中运行代码时,我观察到的是:

Default
Case 0
Case 1
Case 2

这里甚至观察到同样的情况:http://www.ideone.com/pFh1d

问题是什么?这是编译器问题还是我的代码中有任何错误?


编辑:

PS:如果我必须先写 default case,那有什么错呢?有什么危害吗?

但是一旦编译器知道它必须执行default语句,为什么还要在default case语句后面放一个break语句呢?

最佳答案

switch 语句将跳转到适当的casedefault,然后代码将继续执行直到下一个break 语句。

由于您的代码没有 break,它将从 default: 开始,然后简单地继续执行以下所有语句。在编写类似条件时,这有时是一个有用的技巧,但通常缺少 break 语句会导致混淆。

最后的 return 也出现在错误的位置,它应该在 switch 语句之后。

修改如下。

        int i=4;
switch(i) {

default :
printf("%s","Default");
break;
case 0:
printf("%s","Case 0");
break;
case 1:
printf("%s","Case 1");
break;
case 2:
printf("%s","Case 2");
break;

}
return 0;

关于C - Tricky Switch Case 工作..!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5776253/

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