吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1278|回复: 30
收起左侧

[求助] 想问下C++中的switch语句能不能这样写

  [复制链接]
dong555 发表于 2022-11-14 00:10
本帖最后由 dong555 于 2022-11-14 00:11 编辑

比如数字1-100之间有些数字触发相同语句能不能写在同个case下面
比如这样:
switch (i)
{

   case 1..9:语句1;
   case 10..45:语句2;
   case 46..98:语句3
   case 99,100:语句3;
}


Object Pascal的case语法能支持的,就是不知道C++中switch能不能支持这种写法

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Lucifer_BW + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

htpidk 发表于 2022-11-14 00:23
可以。。
吾乃木易先生 发表于 2022-11-14 00:27

可以,C 语言里的 Switch 如果不加 break; 就会继续往下执行,所以你可以这么写:

switch (i) {
    case 1:
    case 2:
    ...
    case 9:
        语句 1; break;
    case 10:
    ...
    case 45:
        语句 2; break;
}
wangnan1986 发表于 2022-11-14 00:30
def2ult 发表于 2022-11-14 00:32
一楼大佬说可以运行的话应该是没有问题,可能是有的编辑器识别会出现问题吧?
a14b0171f57974136b0bcbfbcf3eac6.png
htpidk 发表于 2022-11-14 00:41
def2ult 发表于 2022-11-14 00:32
一楼大佬说可以运行的话应该是没有问题,可能是有的编辑器识别会出现问题吧?

你这是语法问题,要写成
case 0:
case 1:
case 2:
xxx;
break;
没有case 0..10这样的写法
头像被屏蔽
洛枫 发表于 2022-11-14 00:41
提示: 作者被禁止或删除 内容自动屏蔽
黎昕 发表于 2022-11-14 00:42
本帖最后由 黎昕 于 2022-11-14 00:47 编辑

[C++] 纯文本查看 复制代码
int Test()
{
        int i = 11;
        if (i >= 0 && i <= 10)
        {
                return 0;
        }
        else if (i >= 11 && i <= 20)
        {
                return 1;
        }
}

void main()
{
        auto i = Test();
        switch (i)
        {
        case 0:
                printf("Hello1");
                break;
        case 1:
                printf("Hello2");
                break;
        default:
                break;
        }
}


既然不支持这种写法,你就想办法让变成这样,应该是类似了
def2ult 发表于 2022-11-14 00:44
htpidk 发表于 2022-11-14 00:41
你这是语法问题,要写成
case 0:
case 1:

好的佬,学到了,我还以为是帖子的固定写法呢
BrightXu 发表于 2022-11-14 01:32
可以,比如这样:
[C] 纯文本查看 复制代码
#include <math.h>
#include <stdio.h>

int main() {
    int score;
    scanf("%d", &score);
    score = fmax(0, fmin(score, 100));
    switch (score) {
        case 0 ... 60:
            puts("No Pass!!!");
            break;
        case 61 ... 80:
            puts("Pass.");
            break;
        case 81 ... 90:
            puts("Good.");
            break;
        default:
            puts("Very Good!!!");
            break;
    }
    return 0;
}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 06:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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