首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能在Objective-C中的switch-case语句中使用我的常量?[error = Expression不是整数常量表达式]

这个错误通常是因为在Objective-C的switch-case语句中使用了非整型常量表达式,而switch-case语句只支持整型常量表达式。要解决这个问题,你可以将常量表达式转换为整型,或者在switch-case语句中使用if-else语句。

例如,如果你有一个常量表达式25,你可以将其转换为整型,如下所示:

代码语言:txt
复制
int num = 25;
switch (num) {
    case 25:
        // do something
        break;
    default:
        // do something
        break;
}

如果你必须在switch-case语句中使用常量表达式,你可以使用if-else语句,如下所示:

代码语言:txt
复制
if (condition) {
    // do something
} else {
    // do something
}

在Objective-C的switch-case语句中,不推荐使用常量表达式,而应该使用整型常量表达式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

常量表达式是什么_const常量

大家好,又见面了,我是你们的朋友全栈君。 常量表达式值(constant-expression value)。...不过编译后我们发现,无论将GetConst的结果用于需要初始化数组Arr的声明中,还是用于匿名枚举中,或用于switch-case的case表达式中,编译器都会报告错误。...·在使用前必须已有定义。 ·return返回语句表达式中不能使用非常量表达式的函数、全局数据,且必须是一个常量表达式。...首先是常量表达式函数中最为明显的限制,就是要求函数体中只有一条语句,且该条语句必须是return语句。...而对于j,如果不是有代码显式地使用了它的地址,编译器可以选择不为它生成数据,而仅将其当做编译时期的值(是不是想起了光有名字没有产生数据的枚举值,以及不会产生数据的右值字面常量?

80010

android library 使用switch 问题

当我们在Android依赖库中使用switch-case语句访问资源ID时会报错,报的错误是case分支后面跟的参数必须是常数,换句话说出现这个问题的原因是Android library中生成的R.java...中的资源ID不是常数.    ...当我们把一个android的项目配置为library时,我们就不能在 这个项目中使用switch case,原因就是 library库中的 生成的R.java中的资源ID不是常数,所以需要我们换一种写法...但是当你打开你的主工程,在onClick、onItemClick等各种回调方法中是可以通过switch-case语句来访问资源ID的,因为在主工程的R.java中资源ID都被声明为了final常量。  ...既然是由于library的R.java中的资源ID不是常量引起的,我们可以在library中通过if-else-if条件语句来引用资源ID,这样就避免了这个错误。

68820
  • 第三章 流程控制语句

    如果表达式的值等于某个 case 中的常量值,则执行对应 case 中的执行语句。...**直到遇到break关键字或执行完所有的case及default的执行语句,跳出当前的switch-case结构** ‍ 使用注意点: switch(表达式)中表达式的值必须是下述几种类型之一:byte...switch 语句的条件是一个常量值(byte,short,int,char,枚举,String),只能判断某个变量或表达式的结果是否等于某个常量值,​使用场景较狭窄​。...switch 语句优势 当条件是判断某个变量或表达式是否等于某个固定的常量值时,使用 if 和 switch 都可以,习惯上使用 switch 更多。因为​效率稍高​。...如果输入的数据类型与要求的类型不匹配时,会报异常 导致程序终止。 6. 如何获取一个随机数 ‍ 如何产生一个指定范围的随机整数?

    15910

    Swift基础 基础知识

    在Objective-C中,’ nil ‘是一个指向不存在对象的指针。在Swift中,’ nil ‘不是一个指针——它是一个特定类型的值的缺失。...可选绑定可以与’ if ‘和’ while ‘语句一起使用,以检查可选绑定中的值,并将该值提取到一个常量或变量中,作为单个操作的一部分。...如果转换成功,actualNumber常量可以在if语句的第一个分支中使用。它已经用可选中包含的值初始化,因此您不使用!后缀以访问其值。在本例中,actualNumber仅用于打印转换结果。...如果你想在’ If ‘语句的第一个分支中操作’ actualNumber ‘的值,你可以写’ If var actualNumber ‘代替,而包含在可选的值将作为一个变量而不是一个常量可用。...由于makeASandwich()可以抛出错误,函数调用被包装在try表达式中。通过将函数调用包装在do语句中,抛出的任何错误都将传播到提供的catch子句。

    15500

    expr_const在函数前与函数后的区别

    大家好,又见面了,我是你们的朋友全栈君。 const修饰常量,但是const并未区分编译时常量和运行时常量,而constexpr则只能是编译时常量,在C++11中提出。...目录 一、常量表达式 二、constexpr变量 三、constexpr函数 四、字面值类型 五、指针和constexpr 六、字面值常量类 参考 一、常量表达式 常量表达式(const expression...sz本身是一个常量,但它的具体值直到运行时才能获取到,所以也不是常量表达式。 二、constexpr变量 在一个复杂系统中,很难分辨一个初始值到底是不是常量表达式。...(2)constexpr函数体内也可以包含其他语句,只要这些语句在运行时不执行任何操作就行。例如,constexpr函数中可以有空语句、类型别名、using声明。...当把scale函数用在需要常量表达式的上下文中时,编译器发现不是常量表达式,发出错误信息。 (4)constexpr函数通常定义在头文件中。

    77030

    Kotlin学习笔记(二)-程序结构(上 )

    使用 Lambda 表达式可以使代码变的更加简洁紧凑。...可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。...接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void在Kotlin中时Unit) (String s) -> System.out.print(s) Lambda表达式要是细说的话可能一篇文章也不够...,我觉得刚开始看虽然代码变的更简洁,但是对我我这种只会Java一种语言的来说一下子转变有时候还是挺别扭的,感觉这个就得多写多看慢慢适应。...因为 {}中的内容是表达式而不是函数,所以return的是main这个函数,可以改成如下: run Break@/*外部标识*/{ args.forEach Continue@/

    63120

    Swift基础语法(常量变量、数据类型、元组、可选、断言)

    = 1_000_000.000_000_1 数值型类型转换 通常来讲,即使代码中的整数常量和变量已知非负,也请使用Int类型。...可选 使用可选(optionals)来处理值可能缺失的情况。可选表示: 有值,等于 x 或者 没有值 注意:C 和 Objective-C 中并没有可选这个概念。...这个惊叹号表示“我知道这个可选有值,请使用它。”...如果转换成功,actualNumber常量可以在if语句的第一个分支中使用。它已经被可选包含的值初始化过,所以不需要再使用!后缀来获取它的值。...// surveyAnswer 被自动设置为 nil 注意:Swift 的nil和 Objective-C 中的nil并不一样。在 Objective-C 中,nil是一个指向不存在对象的指针。

    2K90

    ——谈谈开发语言与程序员的职业发展

    在声明时可以指定常量和变量的类型,也可以不指定类型,而是直接赋值。Swift会通过所赋值的类型自动将定义变量的类型。 如果声明时不进行赋值,那么每个类型的变量都有自己的默认值。...另一个强大的功能是For-in语句的增强。 比如在For-in语句中使用0…4表示循环时取[0,4]的闭区间内整数值。 还可以在For-in中使用“元组”遍历Dictionary。...另外用“n…m”的形式表示[n,m]闭区间的语法也可以应用在switch-case语句中: 以上就是苹果WWDC2014中对Swift功能强大方面的一些介绍。...在Swift中使用泛型很方便,语法和Java、C#、C++也很类似。 不过使用Objective-C的朋友也有福了,在即将发布的XCode7中,Objective-C也支持泛型了。...通过示例代码可以看出,Swift支持使用多个catch语句捕获不同类型的Error,而且也支持使用finally语句。

    1.7K30

    窥探Swift编程之错误处理与异常抛出

    Assertions(断言) 在单元测试中是少不了断言的,Swift中的断言和Objective-C的区别不是太大,使用方法也是大同小异。...使用try对错误进行捕捉,使用do-catch对错误进行处理。具体处理方式如下所示。在下方错误处理中类似于switch-case语句,catch后边可以枚举匹配错误类型,具体如下所示:     ?...该功能在开发中是非常常用的,而且用起来也是非常爽的。接下来就看一下如何为我们的错误类型添加错误原因。...= nil else { 6 throw MyErrorType(reason: "我是详细的错误原因,存储在error中") 7 } 8 } (3)最后要对抛出的错误进行do-catch...由上面的输出结果可知,error是我们自定义的MyErrorType类型,我们可以使用下面的代码来代替catch中的print语句,如下所示:     ?

    2.3K50

    c语言 switch错误用法,C语言switch语句的详细用法

    将其与后续常量表达式的值一一比较. 当表达式的值等于常量表达式的值时,将执行后续语句,然后不进行判断,并且在个案之后的所有后续语句将继续....如果在所有情况下表达式的值都与常量表达式不同,则执行default之后的语句....但是在输入3之后,将执行情况3及以后的所有句子c语言 switch语句,并输出星期三及以后的所有单词. 这当然是不希望的. 为什么会这样?这仅反映了switch语句的功能....\n”); } return 0; } 使用switch语句时,还应注意以下几点: 大小写之后的每个常量表达式的值不能相同,否则会发生错误....在这种情况下,允许使用多个语句,可以将其括在{}中. 可以更改case和default子句的顺序,而不会影响程序执行结果. 默认子句可以省略.

    1.5K20

    流程控制语句

    switch-case选择结构 语法格式: switch(表达式){ case 常量值1: 语句块1; //break; case 常量值2:...如果表达式的值等于某个case中的常量值,则执行对应case中的执行语句。...第2步:执行完此case的执行语句以后 情况1:如果遇到break,则执行break并跳出当前的switch-case结构 情况2:如果没有遇到break,则会继续执行当前case之后的其它case中的执行语句...直到遇到break关键字或执行完所有的case及default的执行语句,跳出当前的switch-case结构 使用注意点: switch(表达式)中表达式的值必须是这几种类型 : byte , short...关键字break 和 continue的使用 适用范围 在循环结构中使用的作用 相同点 break switch-case 循环结构 一旦执行,就结束(或跳出)当前循环结构

    12810

    Swift基础语法

    如果表达式中同时出现了整数和浮点数,会被推测为Double类型: [objc] view plain copy print?...1_000_000.000_000_1 数值型类型转换 通常来讲,即使代码中的整数常量和变量已知非负,也请使用Int类型。...可选 使用可选(optionals)来处理值可能缺失的情况。可选表示: 有值,等于 x 或者 没有值 注意:C 和 Objective-C 中并没有可选这个概念。...如果转换成功,actualNumber常量可以在if语句的第一个分支中使用。它已经被可选包含的值初始化过,所以不需要再使用!后缀来获取它的值。...// surveyAnswer 被自动设置为 nil 注意:Swift 的nil和 Objective-C 中的nil并不一样。在 Objective-C 中,nil是一个指向不存在对象的指针。

    1.5K60

    知识扩展--if...else...与switch...case...的执行原理if和switch的原理

    switch ( 常量表达式 ){ case 常量1 :语句; case 常量2 :语句; case 常量3 :语句; ......case 常量n:语句; default :语句; } switch后面小括号中常量表达式的值必须是整型或字符型(不同的编程语言规定不一样,Java除了整数之外还可以是枚举和字符串,PHP还可以是浮点数...) case后面的值可以是常量数值,如1、2;也可以是一个常量表达式,如2+2;但不能是变量或带有变量的表达式,如a*2。...,对于if...else..语句,首先进行条件判断,if表达式为真,则继续执行if快中的语句,然后利用jmp跳转到else语句块外,否则会利用jmp跳转到else语句块中,然后依次执行其后的每一句代码。...但是switch-case的缺点是只能处理常量的匹配,在仅有常量选择分支的时候,可以选用switch-case结构,而此时通过遍历数组比较更是不可取的一种方式,但是if-elseif可以应用于更多的场合

    1.6K30

    C语言中的分支与循环

    1.if 结构:if(表达式) 语句 含义:表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行。...必须是整型表达式,case后面的值,必须是整型常量表达式 和if语句的对比:例子:输入一个数,计算除3过后的余数 如果用if语句写的话,如下: 如果用switch-case语句写的话,如下: 在上述的代码中...所以,switch语句中break语句是非常重要的,能实现真正分支的效果。 当然,break语句也不是每个switch语句中是必须要有的,这就要根据实际情况考虑了。...switch语句中的default: 在使用switch语句中也会遇到一种情况,switch后的表达式中的值无法匹配代码中的case语句,这时要不不做处理,要不就在switch语句中加入default语句...expression结果不是value1,也不是value2的时候,就会执行default语句。

    9410

    Swift基础 错误处理

    区分这些不同情况允许程序解决一些错误,并向用户传达任何无法解决的错误。 注意 Swift中的错误处理与Cocoa和Objective-C中使用NSError类的错误处理模式互操作。...与包括Objective-C在内的许多语言中的异常处理不同,Swift中的错误处理不涉及解开调用堆栈,这个过程在计算上可能很昂贵。因此,throw语句的性能特征与return语句的性能特征相当。...如果没有匹配模式,错误将被最终的catch子句捕获,并绑定到局部error常量。如果没有抛出错误,则执行do语句中的其余语句。 catch子句不必处理do子句中的代码可以抛出的所有可能错误。...否则,x和y的值是函数返回的值。请注意,x和y是someThrowingFunction()返回的任何类型的可选。在这里,函数返回一个整数,因此x和y是可选整数。 使用try?...defer语句来确保open(_:)函数具有相应的调用 close(_:) 注意 即使不涉及错误处理代码,您也可以使用defer语句。

    15800

    前端基础-JavaScript流程控制

    { // 最后默认执行语句 } 案例 //获取两个数字中的最大值 var num1=100; var num2=20; if(num1>num2){ console.log(num1);...a1:a2; console.log(s); switch语句 语法格式: switch (expression) { case 常量1: 语句; break; case 常量2...获取表达式的值,和值1比较,相同则执行代码1,遇到break跳出整个语句,结束 * 如果和值1不匹配,则和值2比较,相同则执行代码2,遇到break跳出整个语句,结束 * 如果和值2不匹配,则和值3比较...,相同则执行代码3,遇到break跳出整个语句,结束 * 如果和值3不匹配,则和值4比较,相同则执行代码4,遇到break跳出整个语句,结束 * 如果和之前的所有的值都不一样,则直接执行代码5,结束 *.../ break可以省略,如果省略,代码会继续执行下一个case switch 语句在比较值时使用的是全等操作符, 因此不会发生类型转换(例如,字符串'10' 不等于数值 10) /* * * 判断这个人的成绩的级别

    81210

    Swift进阶四——流程控制

    使用switch-case来匹配元组 你可以使用元组来在一个switch语句中测试多个值;使用下划线(_)来表明匹配所有可能的值。...也就是说,它是停止当前的遍历,而不是结束整个循环。 break break语句会立即结束整个控制流语句。当你想要提前结束switch或者循环语句的时候,就可以使用break语句。...} } 表达式模式(Expression Pattern) 表达式模式代表表达式的值。表达式模式只出现在switch语句的case标签中。...表达式模式代表的表达式会使用Swift标准库中的 ~= 运算符与输入表达式的值进行比较。如果 ~= 运算符返回true,则匹配成功。默认情况下, ~=运算符使用==运算符来比较两个相同类型的值。...他也可以将一个整型数值与一个Range实例中的一段整数区间做匹配。

    84610

    【C语言程序设计——选择结构程序设计】求输入的日期是该年的第几天(头歌实践教学平台习题)【合集】

    语言 中,switch语句的基本形式如下: switch (expression) { case constant_expression_1: // 语句序列1...constant_expression:每个case后面跟着一个常量表达式。...这个常量表达式的值必须是在编译时就能确定的整型或枚举类型的值,并且在同一个switch语句中,不同case后的常量表达式的值必须互不相同。...default:default分支是可选的。当expression的值与所有case后的常量表达式的值都不匹配时,就会执行default分支中的代码。...正确使用数据类型:switch表达式和case后的常量表达式都应该是整数类型(包括字符类型)。如果使用其他类型(如浮点数),编译器会报错。

    6700

    【JavaSE学习】Day2 JavaSE基础语法

    否则,范围小的就没机会执行了。 3. if-else结构是可以相互嵌套的。 4. 如果if-else结构中的执行语句只有一行时,对应的一对{}可以省略的。但是,不建议大家省略。...switch-case选择结构 switch(表达式){ case 常量1:     执行语句1;     //break; case 常量2:     执行语句2;     //break; ......default:     执行语句n;     //break; } 说明: ① 根据switch表达式中的值,依次匹配各个case中的常量。...当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构   末尾结束为止。...② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构 ③ switch结构中的表达式,只能是如下的6种数据类型之一:    byte 、short

    43220
    领券