鱼C论坛

 找回密码
 立即注册
查看: 949|回复: 10

[已解决]C语言关于switch和case的小问题

[复制链接]
发表于 2021-2-7 20:12:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
C语言关于switch和case的小问题
最佳答案
2021-2-7 20:22:18
本帖最后由 昨非 于 2021-2-7 20:55 编辑

switch后跟常量表达式,这种分段函数用if-else更好些吧
因为分段函数的分支判断条件是x大于、小于或等于0,
也就是意味着swich后面必须把这三种情况用常量表达式表示
显然很麻烦(可能还要单独用语句来区分)
不如直接用if来区分x的三种情况,在分支下直接对f(x)赋值
1.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-7 20:22:18 | 显示全部楼层    本楼为最佳答案   
本帖最后由 昨非 于 2021-2-7 20:55 编辑

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

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
cjh1 + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 20:25:58 From FishC Mobile | 显示全部楼层
同问,不是谁更好,而是能否使用switch!?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 20:36:08 | 显示全部楼层
不能吧 最后一个是变量

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
cjh1 + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 20:41:36 | 显示全部楼层
不可以的

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
cjh1 + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 21:24:52 | 显示全部楼层
本帖最后由 jackz007 于 2021-2-7 21:32 编辑

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

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
cjh1 + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-8 13:43:41 | 显示全部楼层
非常感谢大伙们的回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

今天评分次数满了 明天给你评
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-9 16:51:30 | 显示全部楼层
cjh1 发表于 2021-2-8 13:47
今天评分次数满了 明天给你评

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

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
cjh1 + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 14:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表