yc哈哈哈 发表于 2018-3-1 13:19:47

switch语句求教

#include <stdio.h>

char *getWord(char);

char *getWord(char c)
{
        switch(c)
        {
                case 'A': return "Apple";
                case 'B': return "Banana";
                case 'C': return "Cat";
                case 'D': return "Dog";
                default: return "None";
        }
}

int main()
{
        char input;

        printf("请输入一个字母:");
        scanf("%c", &input);

        printf("%s\n", getWord(input));

        return 0;
}



为什么这里case后面不加break也能正常显示运行啊

BngThea 发表于 2018-3-1 13:31:01

因为执行return的时候这个函数就结束了
和break作用一样

风过无痕丶 发表于 2018-3-1 14:24:23

你可以把每个case当做一个入口~
打个比方~
比如 和 第二个case成立了。 他就会从第二个case开始,一直往下执行~ 第二个。第三个。第四个。第五个。。。。。
那为什么需要一个break呢?

break 不是必须的~ 你可以认为他是可选项~
再打个比方~
比如 又第二个case成立了~还是往下读 在第二个case的末尾看到了break,那他还会继续往下读吗。答案是不会~ 你可以认为break在switch里面 是用来中止switch的~

maomao丶 发表于 2018-3-1 16:42:15

因为加break只是在你想要的地方停下来,所以加不加都会使程序完整运行,只是不加的话程序会输出switch里面的所有case,而加了break就会执行下去,直到遇到第一个break才会退出。

z309844110 发表于 2018-3-2 14:51:29

char *getWord(char c)
{
      switch(c)
      {
                case 'A': return "Apple";
                case 'B': return "Banana";
                case 'C': return "Cat";
                case 'D': return "Dog";
                default: return "None";

每个函数只能返回一个return即便执行了后面的语句 也只能返回第一个return

Dr丶温 发表于 2018-3-2 21:34:07

当执行到第一个return后,后面的代码全都不执行了,直接返回第一个return的结果

757129128 发表于 2018-3-3 17:41:08

return 结束了这个函数并返回了一个值。
break 在switch中也代表结束,但是根据需求添加,如果不添加,程序会继续执行,直到遇到break或函数结束为止。

wjp 发表于 2018-3-3 22:03:24

从执行return的地方直接把这个函数结束了

Bingoren 发表于 2018-3-3 22:34:12

return 的时候就已经结束了
页: [1]
查看完整版本: switch语句求教