使用switch语句可以解决的最大案例数

 maggieting0334_990 发布于 2023-02-13 10:38

这是出于好奇.单个交换机中可以拥有的最大交换机数量是多少,包括默认值:case.我的意思是这样的:

switch(ch)
{
case 1:
//some statement
break;
case 2: 
//some statement
break;
.
.
.
.
case n:
//some statement
break;
default:
//default statement
}

我的问题是我们可以在这里获得的最大价值是多少?虽然这不是编程上重要的,但我发现这是一个相当有趣的想法.我搜索了一些博客并在此发现了一个声明.

从我的文件,据说:

标准C指定交换机可以包含至少257个case语句.标准C++建议至少支持16,384个案例语句!真正的价值必须取决于实施.

但我不知道这些信息有多准确,有人可以给我一个想法吗?此外,依赖实现意味着什么?假设存在这样的限制,我可以以某种方式将其更改为更高或更低的值吗?

1 个回答
  • 该草案C++标准 Annex B (informative) Implementation quantities说(重点煤矿):

    由于计算机是有限的,因此C++实现不可避免地受限于它们可以成功处理的程序的大小.每个实施都应记录已知的限制.[...]

    限制可能会限制包括下面描述的数量或其他数量的数量.建议将每个数量后面的括号内的数字作为该数量的最小值.但是,这些数量仅是指导原则,不能确定合规性.

    并包括以下项目:

    - switch语句的case标签(不包括任何嵌套switch语句的标签)[16384].

    但这些并不是硬限制,只是对最小值的建议.

    实现是编译器,标准库和支持工具,因此实现依赖基本上意味着在这种情况下编译器将决定限制是什么,但它应该记录此限制.该标准草案定义了实现定义的行为在部分1.3.10如下:

    行为,对于格式良好的程序构造和正确的数据,这取决于实现和每个实现文档

    我们可以看到,gcc 不加以限制的Ç:

    GCC仅受可用内存的限制.

    在这种情况下,它也应该涵盖C++,看起来Visual Studio也没有限制:

    Microsoft C不限制switch语句中的case值的数量.该数量仅受可用内存的限制.ANSI C要求在switch语句中允许至少257个case标签.

    我找不到类似的文档clang.

    2023-02-13 10:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有