cjh1 发表于 2021-2-7 20:12:55

C语言关于switch和case的小问题

C语言关于switch和case的小问题

昨非 发表于 2021-2-7 20:22:18

本帖最后由 昨非 于 2021-2-7 20:55 编辑

switch后跟常量表达式,这种分段函数用if-else更好些吧
因为分段函数的分支判断条件是x大于、小于或等于0,
也就是意味着swich后面必须把这三种情况用常量表达式表示
显然很麻烦(可能还要单独用语句来区分)
不如直接用if来区分x的三种情况,在分支下直接对f(x)赋值

quark 发表于 2021-2-7 20:25:58

同问,不是谁更好,而是能否使用switch!?

晨曦城 发表于 2021-2-7 20:36:08

不能吧 最后一个是变量

qiuyouzhi 发表于 2021-2-7 20:41:36

不可以的

jackz007 发表于 2021-2-7 21:24:52

本帖最后由 jackz007 于 2021-2-7 21:32 编辑

      switch . . . case 选择语句只能适合变量的值为有限多个确定值的情况,楼主描述的变量 x 显然不适合直接套用,但是,可以通过适当改造,在不破坏函数值的前提下,对 x 进行适当的改造,以适应使用 switch . . . case 语句来表达函数值。
int foo(int x)
{
      int r                              ;
      if(x > 0) x = 1                  ;
      else if(x < 0) x = -1            ;
      switch(x) {
                case -1:
                case0: r = x ; break   ;
                case1: r = 2 * x ; break ;
      }
      return r                           ;
}

风过无痕1989 发表于 2021-2-7 21:37:58

case 对应的是某种确定的情况,现在 x < 0、x = 0,x > 0 是三种范围,你若一定要用,可以这样(有点脱裤子那个啥哈)
int y;
if (x < 0)
    y = 1;
else if (x == 0)
    y = 2;
else
    y = 3;
switch(y);
case 1: f(x) = -1;break;
case 2: f(x) = 0;break;
case 3: f(x) = 2x;

cjh1 发表于 2021-2-8 13:43:41

非常感谢大伙们的回复{:10_297:}

cjh1 发表于 2021-2-8 13:47:49

风过无痕1989 发表于 2021-2-7 21:37
case 对应的是某种确定的情况,现在 x < 0、x = 0,x > 0 是三种范围,你若一定要用,可以这样(有点脱裤子 ...

今天评分次数满了 明天给你评

风过无痕1989 发表于 2021-2-9 16:51:30

cjh1 发表于 2021-2-8 13:47
今天评分次数满了 明天给你评

谢谢!鱼币我倒是不在乎,若能给几个贡献(因为得到它很难,我也欠朋友23个贡献),就谢谢你了

风过无痕1989 发表于 2021-2-9 22:25:43

风过无痕1989 发表于 2021-2-9 16:51
谢谢!鱼币我倒是不在乎,若能给几个贡献(因为得到它很难,我也欠朋友23个贡献),就谢谢你了

谢谢!
页: [1]
查看完整版本: C语言关于switch和case的小问题