switch case支持哪些数据类型(IOS switch-case知多少)

:暂无数据 2026-07-29 01:50:09 3

switch case支持哪些数据类型(IOS switch-case知多少)

各位老铁们好,相信很多人对switch case支持哪些数据类型都不是特别的了解,因此呢,今天就来为大家分享下关于switch case支持哪些数据类型以及IOS switch-case知多少的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

本文目录

IOS switch-case知多少

IOS switch-case知多少
时间:2015-07-28 22:40:40
阅读:1731
评论:0
收藏:0

标签:
1. switch参数类型
switch参数类型要求是integer type,准确来讲,是可以转换成integer的类型, 这包括所有的C基本数据类型((signed/unsigned)char, (short/long signed/unsigned)int, float, double, longlong, bool(C++/objective-c) ),还有枚举类型,但是不包括字符串、结构体、联合体、对象、函数指针等复杂类型。
其实字符串地址指针、对象址指指针等指针,都是可以转化为UInteger,
因为它们在内存中地址都可以理解成unsigned int, 但是为什么不能使用这些指针作为switch的参数呢?
这是因为这些指针都是动态指定的,每次运行编译器/程序指定的地址不尽相同,这就会导致case语句会无法判断是哪一种条件成立,而case后面的条件要
求必须是常量;复杂对象的引用往往是利用指针指向的,既然指针都是无法确定其值的,所以复杂对象自然无法作为switch参数了.
e.g. 1 下面这段代码使用NSString指针作为switch参数,编译无法通过, 提示Statement requires expression of integer type(‘NSString *__strong‘ invalid)错误
NSString *str = ;
NSLog(@"(NSInteger)str=%lx", (NSInteger)str);
switch (str) {
case (NSInteger)nil:
NSLog(@"case nil");
break;

default:
NSLog(@"case default");
break;
}
e.g. 2将switch参数(NSString * )str 修改为(UInteger)str后编译通过,运行也无错误,但是却没有执行任何case语句
NSString *str = ;
NSLog(@"(NSInteger)str=%lx", (NSInteger)str);
switch ((NSInteger)str) {
case (NSInteger)nil:
NSLog(@"case nil");
break;

default:
NSLog(@"case default");
break;
}
再次运行发现,两次运行(NSInteger)str 输出的地址结果都不一样
第1次 Log输出
(NSInteger)str=1001002e0
第2次 Log输出
(NSInteger)str=1002021c0
这样自然就匹配不到正确确定的case 语句了。如果想要匹配怎么办?那就只能改用if-else语句了,能达到更灵活的效果。
NSString *str = ;
NSString *str2 = str;
if (str2 == str) {
NSLog(@"\nstr2 == str");
}else{
NSLog(@"\nstr2 != str");
}
Log输出
str2 == str
2.case 语句块注意问题
case 语句是为了匹配switch中的参数的值,所以其条件值必须是常数(const).
case
作为一个局部语句块,也能拥有的自己的变量与内存空间,那么在case语句块内部声明变量时,应该确保块内定义的变量,不被块外使用,否则会导致编译错误
(块外对变量不具有可见性);如果是间接使用,则可能导致运行错误(内存地址已被释放,在引用可能指向一个错误位置, 也就是所谓的野指针)。
如果定义了新的变量,则需要用代码块表示符号‘{}‘括起来,否则可能编译阶段报错。
switch (1) {
case 1:{
int a=1;
NSLog(@"1. a=%d", a);
}
NSLog(@"2. a=%d", a); //编译错误 使用未声明标示符‘a‘
int a=2; //正常通过编译
NSLog(@"3. a=%d", a);
break;

case 2:
int a=3; //编译错误 非预期表达式
break;
}

switch条件语句中,case后面可以跟什么型别的资料

switch条件语句中,case后面可以跟什么型别的资料

在Java7之前,switch只能支援 byte、short、char、int或者其对应的封装类以及Enum型别。在Java7中,也支援了String型别。

case后面必须是常数
#define定义的或者const定义的常数都可以

只能针对基本资料型别使用switch,这些型别包括int、char等这个是使用switch的要求哦

switch语句中可以放那些资料型别与其他条件语句有什么区别

java 1.6(包括)以前,只是支援等价成int 基本型别的资料:byte ,short,char,int(其他的都不可以)。
1.7加入的新特性可以支援String型别的资料。long是不可以的。。就算是通过强制的转化也必须是转成int。

switch与if-else的区别:

switch建议判断固定值的时候用;

if建议判断区间或范围的时候用;

用switch能做的,用if都能做,但是反过来则不行。

switch语句后的表达式的值是哪些类型

一般格式:
switch (表达式)

case 常量标号1:语句序列1;
break;
case 常量标号2:语句序列2;
break;

case 常量标号n:语句序列n;
break;
default: 语句S;

其中:

①表达式:可以控制程序的执行过程,表达式的结果必须是整数、字符或枚举量值。

②case后面的常量标号,其类型应与表达式的数据类型相同。表示根据表达式计算的结果,可能在case的标号中找到,标号不允许重复,具有唯一性,所以,只能选中一个case标号。尽管标号的顺序可以任意的,但从可读性角度而言,标号应按顺序排列。

③语句序列是switch语句的执行部分。针对不同的case标号,语句序列的执行内容是不同的,每个语句序列允许有一条语句或多条语句组成,但是case中的多条语句不需要按照复合语句的方式处理(用{}将语句括起来),若某一语句序列i为空,则对应的break语句可以省略(去掉)。 

④break是中断跳转语句,表示在完成相应的case标号规定的操作之后,不继续执行switch语句的剩余部分而直接跳出switch语句之外,继而执行switch结构后面的第一条语句,如果不在switch结构的case中使用break语句。程序就会接着执行下面的语句。

⑤default用于处理所有switch结构的非法操作。当表达式的值与任何一个case都不匹配时,则执行default语句。
java 1.6(包括)以前,只是支持等价成int 基本类型的数据:byte ,short,char,int(其他的都不可以)。

1.7加入的新特性可以支持String类型的数据。long是不可以的。。就算是通过强制的转化也必须是转成int。

switch条件语句中,case后面可以跟什么类型的数据

在Java7之前,switch只能支持 byte、short、char、int或者其对应的封装类以及Enum类型。在Java7中,也支持了String类型。

关于本次switch case支持哪些数据类型和IOS switch-case知多少的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

switch case支持哪些数据类型(IOS switch-case知多少)

本文编辑:admin

更多文章:


androidapp源码免费下载(如何实现APK的反编译得到APK的源码)

androidapp源码免费下载(如何实现APK的反编译得到APK的源码)

本篇文章给大家谈谈androidapp源码免费下载,以及如何实现APK的反编译得到APK的源码对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 18:00

security的反义词(risk的反义词)

security的反义词(risk的反义词)

大家好,今天小编来为大家解答以下的问题,关于security的反义词,risk的反义词这个很多人还不知道,现在让我们一起来看看吧!

2026年9月22日 15:40

二郎神杨戬简笔画(二郎神怎么画)

二郎神杨戬简笔画(二郎神怎么画)

本篇文章给大家谈谈二郎神杨戬简笔画,以及二郎神怎么画对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 10:50

service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)

service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)

大家好,关于service pack 3很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思的知识点,相信应该可以解决大家的一

2026年9月22日 10:20

html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)

html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)

本篇文章给大家谈谈html代码怎么写大佬教程,以及html网页的题来个大佬,写代码,题目在图上对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 10:10

结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)

结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)

本篇文章给大家谈谈结构体内又一个struct,以及c++ 在结构体中再嵌入一个结构体如何调用对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 09:40

next是什么意思英语(next是什么单词)

next是什么意思英语(next是什么单词)

本篇文章给大家谈谈next是什么意思英语,以及next是什么单词对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 07:50

美国参议院人数(美国每个州的议员人数取决于什么)

美国参议院人数(美国每个州的议员人数取决于什么)

大家好,今天小编来为大家解答以下的问题,关于美国参议院人数,美国每个州的议员人数取决于什么这个很多人还不知道,现在让我们一起来看看吧!

2026年9月22日 05:20

高中信息技术python(高考信息技术用的是什么语言)

高中信息技术python(高考信息技术用的是什么语言)

今天给各位分享高考信息技术用的是什么语言的知识,其中也会对高考信息技术用的是什么语言进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月22日 02:50

cocos creator中文(cocoscreator和cocoscreator3d的区别)

cocos creator中文(cocoscreator和cocoscreator3d的区别)

各位老铁们好,相信很多人对cocos creator中文都不是特别的了解,因此呢,今天就来为大家分享下关于cocos creator中文以及cocoscreator和cocoscreator3d的区别的问题知识,还望可以帮助大家,解决大家的

2026年9月22日 02:30

最近更新

乳山做网站建设公司价格多少?
2026-09-22 20:31:53 浏览:0
东台企业网站建设流程是怎样的?
2026-09-22 20:30:59 浏览:0
热门文章

wait for you杨和苏(大家听下(wait for you)这首英文歌的开头那段音乐)
2026-06-13 16:20:04 浏览:22
刷关键字排名怎么操作最有效?
2026-09-14 20:02:13 浏览:14
oppo a9拆机教程(oppoa9拆机教程)
2026-06-13 10:40:02 浏览:12
标签列表