C语言switch 和 case 后的表达式值的类型是否可以是浮点型? 您所在的位置:网站首页 switch中的case后面可以写多少个语句 C语言switch 和 case 后的表达式值的类型是否可以是浮点型?

C语言switch 和 case 后的表达式值的类型是否可以是浮点型?

2024-06-21 06:28| 来源: 网络整理| 查看: 265

一、问题

        switch...case 语句根据 switch 后⾯的表达式的计算结果,在后⾯的多个 case 中找对应相等的值,决定执⾏对应 case 后的语句。case 后的值不可以是关系表达式,只能是常量或常量表达式。从数据类型上来说,它只能是整型或字符型,不能是浮点型。那么,switch 后⾯的表达式是否也有此要求,即只能是整型呢?

二、解答

        case 后⾯的值只能是整型,switch 后⾯的值可以是浮点型,⼆者在进⾏值匹配时,先将 switch 计算结果转换为整型,再与 case 进⾏匹配测试。例如:

        按数学意义,x和y都可以是⼩数。C程序中可以将 x/10,得出⼀⼩数,此数值如果得3、3.5或3.51,都执⾏同⼀操作3。程序如下。

#include int main() { double x, y; printf("Input x:\n"); scanf("%lf", &x); if (x >= 50) return 0; switch ((int)x / 10) { case 5: y = 5 * x; break; case 4: y = 4 * x; break; case 3: y = 3 * x; break; default: y = 2 * x; break; } printf("y = %lf\n", y); }

        再说 case 后的表达式,如果把 case 3 改成 case 6/2,此时没有错误,改成 case 7/2 也没有错误。此时,计算机认为是整数3(两个整数运算的结果是整数),⽽不是3.5。如果改成7/2.0,此时编译错误。

三、总结

        switch 后可以不是整型,但与它匹配时会⾃动转换成整型。case 后必须是整型(含字符型)。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有