php switch case 范围如果判断的数有一个范围

switch 语句中省略号与 case 范围 - CSDN博客
switch 语句中省略号与 case 范围
这个是gcc对c语言中switch case的扩展,所以只能用gcc编译通过.
2.7 switch 语句中的 case 范围
在标准 C 中,switch 语句中的 case 标签只能有一个关联值。Sun C 允许使用某些编译器中使用的扩展(称为 case 范围)。
case 范围指定要与单个 case 标签关联的值范围。case 范围语法为:
case&low&...&high&:
case 范围的行为就好像为从&low&到&high(含)的给定范围内的每个值指定了 case 标签。(如果&low&和&high&相等,则 case 范围仅指定一个值。)较低值和较高值必须符合 C 标准的要求。也就是说,它们必须是有效的整数常量表达式(C 标准 6.8.4.2)。case 范围和 case 标签可以随意混合,一个 switch 语句中可以指定多个 case 范围。
编程示例:
enum kind { alpha, number, white, other };
enum kind char_class(char c);
switch(c) {
case 'a' ... 'z':
case 'A' ... 'Z':
case '0' ... '9':
case '\n':
case '\t':
case '\r':
case '\v':
除了 case 标签的现有要求以外的错误情形:
-如果 low 的值大于 high 的值,则编译器会拒绝代码并显示错误消息。(其他编译器的行为不一致,因此,只有通过错误消息才能确保程序在由其他编译器编译时不会表现出不同的行为。)
-如果 case 标签的值在已在 switch 语句中使用的 case 范围内,则编译器会拒绝代码并显示错误消息。
-如果 case 范围重叠,则编译器会拒绝代码并显示错误消息。
请注意,如果 case 范围的一个端点是数值,则在省略号 (...) 两侧留空格以避免其中一个点被视为小数点。
case 0...4;
case 5 ... 9; // ok
本文已收录于以下专栏:
相关文章推荐
在程序中我们经常用到switch case,它的用法就不再用多说了。计算switch中的值然后比较,跳转到相应的分支。很多人说在编译是时通过转化成if。。else来实现的。但实际使用时尤其在调试代码时...
先看看switch在C++里的定义:
     基于整型表达式的值允许在代码的多个部分的中选择。
switch ( expression )
   case constant...
答案补充哦
很简单的事
你可以这么做:switch(a){case 0:case 1:case 2:printf(&lslksdjfl/n&);case 3:case 4:case 5:print...
1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式(变量已经赋过值)
2.BOOL(布尔)数据类型:...
CSDN大牛较多,本人小白,若交流,本人欢迎,若言语偏颇,请绕行。
这二天,工作比较空闲,就看了一些基础的C++语法知识,收获颇多,下面只讲switch  case语句的一些语法细节。请大家坚持看完...
c#——switch case语句
c#中的switch case语句有三种结构,具体形式如下图所示:
(1)Switch的第一种结构:(如例1)
为什么Python中没有Switch/Case语句?不同于我用过的其它编程语言,Python 没有 switch / case 语句。为了实现它,我们可以使用字典映射:def numbers_to_s...
根据传入条件的不同,选择语句会执行不同的语句。下面的例子根据传入的整型变量i的不同而打印不同的内容:
switch i {
fmt.Printf(&0...
本系列文章讲述了基于proteus仿真的51单片机学习,内容全面,不仅讲解电路原理,还讲解了单片机c语言,实例丰富,内容全面。
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)结构化编程:多支条件判断switch case - CSDN博客
结构化编程:多支条件判断switch case
有些条件判断并非简单的真假模式,而是在多种可能中选择一个处理。这种情况,我们需要使用switch case语句进行处理。
以下是对上海地铁自动售票机的模拟
Codestatic&void&Main(string[]&args){&&&&//输出提示信息&&&&System.Console.WriteLine("欢迎使用上海地铁自动售票机");&&&&System.Console.WriteLine("请选择你需要购买的票价:");&&&&System.Console.WriteLine("<span style="color: #&&2&&3");&&&&System.Console.WriteLine("<span style="color: #&&5&&6");&&&&System.Console.WriteLine("<span style="color: #&&8&&9");&&&&string&option&=&System.Console.ReadLine();//接受用户在控制台输入的字符,以回车结束&&&&switch&(option)&&&&{&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了3元票价");&&&&&&&&&&&&break;&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了4元票价");&&&&&&&&&&&&break;&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了5元票价");&&&&&&&&&&&&break;&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了6元票价");&&&&&&&&&&&&break;&&&&}}
switch 语句是一个控制语句,它通过将控制传递给其体内的一个 case 语句来处理多个选择。控制传递给与给定的值匹配的 case 语句。switch 语句可以包括任意数目的 case 实例,但是任何两个 case 语句都不能具有相同的值。语句体从选定的语句开始执行,直到 break 将控制传递到 case 体以外。
switch 语句除了可以处理有匹配的值的情况,还可以处理没有任何 case 表达式与开关值匹配的情况,这种控制由default 标签处理。如果没有 default 标签,则控制传递到 switch 以外。
下面的代码在原先基础上添加了default 标签,提供了用户的更多的体验。
Codestatic&void&Main(string[]&args){&&&&//输出提示信息&&&&System.Console.WriteLine("欢迎使用上海地铁自动售票机");&&&&System.Console.WriteLine("<span style="color: #元,请输入3");&&&&System.Console.WriteLine("<span style="color: #元,请输入4");&&&&System.Console.WriteLine("<span style="color: #元,请输入5");&&&&System.Console.WriteLine("<span style="color: #元,请输入6");&&&&System.Console.WriteLine("请选择你需要购买的票价:");&&&&string&option&=&System.Console.ReadLine();//接受用户在控制台输入的字符,以回车结束&&&&switch&(option)&&&&{&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了3元票价");&&&&&&&&&&&&break;&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了4元票价");&&&&&&&&&&&&break;&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了5元票价");&&&&&&&&&&&&break;&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了6元票价");&&&&&&&&&&&&break;&&&&&&&&default:&&&&&&&&&&&&System.Console.WriteLine("对不起,你输入了一个超越范围的值");&&&&&&&&&&&&break;&&&&}}
任何两个 case 语句不能具有相同的值。C# 不支持从一个 case 标签显式贯穿到另一个 case 标签,在每一个 case 块的后面,都必须有一个跳转语句。但例外的是:当 case 语句中没有代码时,空 case 标签可以从一个 case 标签贯穿到另一个。
以下代码描述了当用户输入1、2、3的时候,系统都认为用户要选择3元的票价。当输入了6、7、8、9的时候,都认为用户选择了6元的票价。
而用户输入了一个不在提示范围的值,会提示用户输入错误。
Codestatic&void&Main(string[]&args){&&&&//输出提示信息&&&&System.Console.WriteLine("欢迎使用上海地铁自动售票机");&&&&&&&&System.Console.WriteLine("<span style="color: #&&2&&3");&&&&System.Console.WriteLine("<span style="color: #&&5&&6");&&&&System.Console.WriteLine("<span style="color: #&&8&&9");&&&&System.Console.WriteLine("请选择你需要购买的票价:");&&&&string&option&=&System.Console.ReadLine();//接受用户在控制台输入的字符,以回车结束&&&&switch&(option)&&&&{&&&&&&&&case&"<span style="color: #":&&&&&&&&case&"<span style="color: #":&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了{0}元票价",<span style="color: #);&&&&&&&&&&&&break;&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了{0}元票价",&option);&&&&&&&&&&&&break;&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了{0}元票价",&option);&&&&&&&&&&&&break;&&&&&&&&case&"<span style="color: #":&&&&&&&&case&"<span style="color: #":&&&&&&&&case&"<span style="color: #":&&&&&&&&case&"<span style="color: #":&&&&&&&&&&&&System.Console.WriteLine("你选择了{0}元票价",&<span style="color: #);&&&&&&&&&&&&break;&&&&&&&&default:&&&&&&&&&&&&System.Console.WriteLine("对不起,你输入了一个超越范围的值");&&&&&&&&&&&&break;&&&&}}
VS2008IDE||
本文已收录于以下专栏:
相关文章推荐
求1+2+…+n.
要求不能使用乘除法、for、while、if 、else、switch、case 等关键字以及条件判断语句(A?B:C).
题目来源于:http://to...
题目:求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A? B:C)
这道题确实有点偏,网上大部分人给出...
解法1:利用递归(&&的短路特性)&&的短路特性:即A&&B中,加入A为假,那么B就不会被运算,因此我们只要将递归放在B中,而将终止条件放在A中即可解决该问题。。。
1 /*************...
面向对象不仅能够让程序的组织结构更清晰,对于程序员而言,面向对象也有助于编程任务的结构化。
随着软件所具有的功能越来越强大,程序也随之变得越来越复杂,整个编程过程的管理也越来越困难。越来越多的...
两种方法表示对字段的条件限制:
第一种:select &#160;ID,(case when 条件一 &#160;and 条件二 &#160;then 0 &#160;when 条件三 &#160;and &#160;条件四 &#160;then &#160;1 else 2 ...
&#160;&#160;&#160; WHEN 条件1 THEN 结果1
&#160;&#160;&#160; WHEN 条件2 THEN 结果2
&#160;&#160;&#160; WHEN 条件3 THEN 结果3
&#160;&#160;&#160; WHEN 条件4 TH...
case语句和判断语句[if...elif...else]功能类似;
当在逻辑判断比较简单的情况下,比后者的代码量要少许多.
匹配模式中可是使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|...
很多时候为了程序的可扩展性和准确性等我们会在数据库中把对应bool类型或string类型的字段设置为int型。但是在程序中显示的时候我们希望能显示用户友好的内容,这个时候我们就需要把查找到的结果转换成...
小随笔 SQL语句中的条件判断CASE
做了这么多年开发,不怕笑话,还真的很少用CASE语句,毕竟很多判断实际上都是在逻辑层就做好了
不过,CASE用起来还是非常方便好用的。
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)35被浏览3460分享邀请回答switch (rule)
大致上类似于// 在初始化时装好的:
target_array[] = {address of foo things, address of bar things, address of baz things};
// 运行时直接找:
call target_array[rule-2];
这样不管你的case value是在多少个,都是一步到位地调用(常量时间)。那计算机是如何判断case的值的规律与否?这个过程是在编译时做的,而不是运行时。我随便想了一下,不妨简单地这样判定:case的个数除以case value的范围,相当于得到一个“填充率”。如果这个“填充率”很低,那么使用数组进行简单映射就会有很多空的槽,于是就不适合生成查找表。比如这样就很好:case 2: do_foo();
case 3: do_bar();
case 5: do_baz();
可以看作:|*|*| |*|
而这样就很糟糕:case 2: do_foo();
case 3: do_bar();
case 100: do_baz();
因为空的槽实在太多了:|*|*| | | | | | ...... |
|2|3|4|5|6|7|8| ...... |99|100|
非常浪费空间。61 条评论分享收藏感谢收起34 条评论分享收藏感谢收起PHP的switch判断语句的“高级”用法详解
作者:SNSGOU
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了PHP的switch判断语句的“高级”用法详解,其实本文讲解的还是它的基础用法,需要的朋友可以参考下
只所以称为“高级”用法,是因为我连switch的最基础的用法都还没有掌握,so,接下来讲的其实还是它的基础用法!
switch 语句和具有同样表达式的一系列的 IF 语句相似。很多场合下需要把同一个变量(或表达式)与很多不同的值比较,并根据它等于哪个值来执行不同的代码。这正是 switch 语句的用途。
注意: 注意和其它语言不同,continue 语句作用到 switch 上的作用类似于 break。如果在循环中有一个 switch 并希望 continue 到外层循环中的下一个轮回,用 continue 2。
下面两个例子使用两种不同方法实现同样的事,一个用一系列的 if 语句,另一个用 switch 语句:
Example #1 switch 结构
if ($i == 0)
&echo "i equals 0";
elseif ($i == 1)
&echo "i equals 1";
elseif ($i == 2)
&echo "i equals 2";
switch ($i)
&&echo "i equals 0";
&&echo "i equals 1";
&&echo "i equals 2";
Example #2 switch 结构可以用字符串
switch ($i)
&case "apple":
&&echo "i is apple";
&case "bar":
&&echo "i is bar";
&case "cake":
&&echo "i is cake";
重点:(这就是我先前一直没掌握的地方!)
为避免错误,理解 switch 是怎样执行的非常重要。switch 语句一行接一行地执行(实际上是语句接语句)。开始时没有代码被执行。仅当一个 case 语句中的值和 switch 表达式的值匹配时 PHP 才开始执行语句,直到 switch 的程序段结束(如 return 语句)或者遇到第一个 break 语句为止。如果不在 case 的语句段最后写上 break 的话,PHP 将继续执行下一个 case 中的语句段。例如:
switch ($i)
&&echo "i equals 0";
&&echo "i equals 1";
&&echo "i equals 2";
特别说明:这里如果 $i 等于 3,PHP不会执行任何echo语句!但是,如果 $i 等于 0,PHP 将执行所有的 echo 语句!如果 $i 等于 1,PHP 将执行后面两条 echo 语句。只有当 $i 等于 2 时,才会得到“预期”的结果——只显示“i equals 2”。所以,别忘了 break 语句就很重要(即使在某些情况下故意想避免提供它们时)。
[效率]在 switch 语句中条件只求值一次并用来和每个 case 语句比较。在 elseif 语句中条件会再次求值。如果条件比一个简单的比较要复杂得多或者在一个很多次的循环中,那么用 switch 语句可能会快一些。
在一个 case 中的语句也可以为空,这样只不过将控制转移到了下一个 case 中的语句。
switch ($i)
&&echo "i is less than 3 but not negative";
&&echo "i is 3";
一个 case 的特例是 default。它匹配了任何和其它 case 都不匹配的情况。例如:
switch ($i)
&&echo "i equals 0";
&&echo "i equals 1";
&&echo "i equals 2";
&&echo "i is not equal to 0, 1 or 2";
case 表达式可以是任何求值为简单类型的表达式,即整型或浮点数以及字符串。不能用数组或对象,除非它们被解除引用成为简单类型。
【实战】 根据上面的知识点,编写这么一个函数:计算容量值实际代表的字节数
&* 返回字节数
&* @param string $val 如 400M
function return_bytes($val = '')
&$val = trim($val);
&$last = strtolower($val{strlen($val)-1});
&switch ($last)
&&case 'g':
&&&$val *= 1024;
&&case 'm':
&&&$val *= 1024;
&&case 'k':
&&&$val *= 1024;
$memorylimit = ini_get('memory_limit');
echo $memorylimit, '&br/&';
echo return_bytes($memorylimit);
特别说明:$val = 400M时,case 'm' 被命中,其下的 $val *= 1024; 被执行,但因为没有 break 语言,所以会继续命中 case 'k',并执行其下的 $val *= 1024;语句,so,总体上相当于执行了 400 * 1024 * 1024 。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 switch case 区间判断 的文章

 

随机推荐