语句中必须有default语句如果switch语句中缺省了default语句,当所有的case语句的表达式值都不匹配时,则会跳转到整个switch语句后的下一个语句执行。...,因此禁止使用空switch语句。...语句中只包含default语句如果switch语句中只包含default语句,则该switch语句的使用无任何实际价值,因此禁止switch语句中只包含default语句。...*...*/}6.8 禁止给变量赋的值与变量的类型不一致给变量赋的值与变量的类型不一致会导致数值有效位的损失。...禁止对枚举类型的越限使用枚举类型只能用于与其它枚举类型进行比较,禁止对枚举类型的越限使用。
不能使用long,范围太大,不必要 可以使用char,用该字符对应的ASCLL码作为数组长度 7.移位运算:5位,long占8个字节64个字节,当移位超过31或者63位时,移位便没有什么意义了。...所以在左侧操作数为int类型的时候,取右侧操作数补码后5位(移位位数,左侧操作数为long类型的时候,取右侧操作数补码后6位(移位位数 public class TestBitMove...8.从JDK1.7开始,switch语句可以支持String类型,那么在底层是如何实现的呢?...枚举类型本质上是一个final类,继承自java.lang.Enum类 在枚举类型保持被枚举对象的引用,且用public static final进行修饰,这样外界就可以直接通过枚举类型.被枚举对象来访问该对象
switch作为一个开关 当变量表达式的值对应case中的值时,执行case后面的语句后跳出switch语句 如果都不符合则执行default后面的语句后跳出switch语句 7.1.2.2 简单的代码示例...语句规则 switch语句非常有用,但在使用时必须谨慎。...所写的任何switch语句都必须遵循以下规则: 只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则不能使用switch语句。...,二进制序列向左移动一位,在末尾补一个0,形成新的二进制序列 移位的时候移动的是补码 左移n位效果相当于,乘上2的n次方 m只参与运算,m的值不变,这里m移位的结果其实是n的值 所以我们总结下来...,向左移位的规则就是:左边丢弃,右边补0 负数同样的道理 10.2.4 右移操作符 移位规则: 首先右移运算分为两种: 逻辑移位:左边用0填充,右边丢弃 算数移位:左边用原该值的符号位填充,右边丢弃
使用变量注意: •变量的作用范围(一对{}之间有效) •初始化值 定义变量的格式: •数据类型 变量名 = 初始化值; •注:格式是固定的,记住格式,以不变应万变。...1^0=1 , 0^1=1 ~ 反码 一个数据针对另一个数据位异或两次,该数不变 移位运算可以快速乘除2的N次方 三元运算符 格式 (条件表达式)?... 执行语句; } if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条,不能省略 建议永远不要省略 switch语句 格式: switch(表达式) {...default: 执行语句; break; } switch语句选择的类型:byte,short,int , char JDK5增加枚举 JDK7增加String case后面只能是常量,不能是变量...结束switch语句的两种情况: 遇到break,执行到switch语句结束 如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break
1 位内存 auto 自动存储类别 sfr 特殊功能寄存器 break 跳出循环或 switch 语句 sbit 特殊功能寄存器中的位 case switch 语句中的一个分支 data 内部数据存储器...- - sizeof 获取变量大小 - - static 静态变量 - - struct 结构体 - - switch 多路分支语句 - - typedef 类型定义 - - union 联合体 -...using:用于指定寄存器组,以优化寄存器使用。 reentrant:用于定义可重入函数,允许函数在中断中被调用。 2.2.2 标准 C 语言关键字 auto:用于定义自动存储类别的变量。...break:用于跳出循环或 switch 语句。 case:用于定义 switch 语句中的一个分支。 char:用于定义字符型变量。 const:用于定义常量。...示例: struct Point { int x; int y; }; switch 用于定义多路分支语句,根据变量的值执行不同的代码块。
程序流程控制 移位运算符 移位运算符面向的运算对象是二进制的位,可单独用它们处理整数类型。左移位运算符(移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。Java也添加了一种“无符号”右移位运算符(>>>),它使用“零扩展”:无论正负,都在高位插入0。...移位可与等号(>=或>>>=)组合使用。此时,运算符左边的值会移动由右边的值指定的位数,再将得到的结果赋值回左边的值。...switch...case语句时,遇到满足的一个case之后,如果之后没有break,将会继续执行接下来的语句而不会管符不符合之后条件,直到遇到break语句或者程序片段执行完毕。...而假如将一个字符串或者浮点数作为选择因子使用,那么它们在switch语句中是不会工作的。 Math.random()会产生0-1之间的值,其范围为[0, 1)。
C语言支持6种位操作: 1.对某些位进行设值(& |) 改变 GPIOA 的状态,对寄存器的值进行&清零操作: GPIOA->CRL&=0XFFFFFF0F; //将第 4-7 位清 0 再与需要设置的值进行...|或运算: GPIOA->CRL|=0X00000040; //设置相应位的值,不改变其他位的值 2.移位操作提高代码可读性 某些时候,直接赋值操作可读性不强,就是看代码的人不知道你要干什么,而移位操作就能很清晰地表达想法...3.取反操作 SR 寄存器的每一位都代表一个状态,某个时刻我们希望去设置某一位的值为 0,同时其他位都保留为 1,简单的作法是直接给寄存器设置一个值: TIMx->SR=0xFFF7; //第3位设置为...格式如下: #define 标识符 字符串 #define SYSCLK_FREQ_72MHz 72000000 //定义72MHz ifdef条件编译 当满足条件时对一组语句进行编译,否则对另一段语句进行编译...typedef 在 MDK 用得最多的就是定义结构体的类型别名和枚举类型。
1^0=1 , 0^1=1 ~ 正数取反,各二进制码按补码各位取反 负数取反,各二进制码按补码各位取反 运算顺序 单目>算数运算符>移位>比较>按位>逻辑>三目>赋值 单目运算符(一元运算符,即一个变量...switch语句: 多分支选择语句,根据表达式的值,来执行多个操作中的一个。...(变量)可以byte、short、int、char、枚举类型。...jdk 7以后,可以使用String类型; case语句后面只能使用常量表达式; case后的值不能重复; 每个case之后都必须由一个break语句,不然就达不到选择执行的效果了。...如果没有,就会一直往下执行下一个case中的语句 当表达式的值与任一case子句中的值都不匹配时,将执行default后面的语句,如果没有default子句,则程序直接跳出switch语句。
值是否小于右操作数的值,如果是那么条件为真。 1.3位运算符 操作符 描述 & 按位与操作符,当且仅当两个操作数的某一位都非0时候结果的该位才为1。...C << = 2等价于C = C << 2 >> = 右移位赋值运算符 C >> = 2等价于C = C >> 2 &= 按位与赋值运算符 C&= 2等价于C = C&2 ^ = 按位异或赋值操作符...2.4、switch循环 使用方法:一般用来做分支的,或者进行选择 JAVA跳出循环的关键字如下: 2.5、break关键字 break主要用在循环语句或者switch语句中,用来跳出整个语句块。...switch case 语句有如下规则: switch 语句可以拥有多个 case 语句。...当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
public 为最高级访问级别,private 为最低级访问级别。...private 级别的返回值。...---- 枚举类型访问权限 枚举中成员的访问级别继承自该枚举,你不能为枚举中的成员单独申明不同的访问级别。...Mark(Int,Int,Int) } var studDetails = Student.Name("Swift") var studMarks = Student.Mark(98,97,95) switch...", "泛型"] ["Swift", "泛型", "Where 语句"] ["Swift", "泛型", "Where 语句"] **
fileprivate文件内私有,只能在当前源文件中使用。private只能在类中访问,离开了这个类或者结构体的作用域外面就无法访问。public 为最高级访问级别,private 为最低级访问级别。...级别的返回值。...----枚举类型访问权限枚举中成员的访问级别继承自该枚举,你不能为枚举中的成员单独申明不同的访问级别。...case Mark(Int,Int,Int)} var studDetails = Student.Name("Swift")var studMarks = Student.Mark(98,97,95) switch...]["Swift", "泛型", "Where 语句"]["Swift", "泛型", "Where 语句"]
(b3 >>> 2);//无符号右移位运算符,二进制为00111111 11111111 11111111 11111100,结果为1073741820 } } 7....(i[5]); //当通过数组下标来获取数组内元素时,[]内的值>=数组长度则报异常java.lang.ArrayIndexOutOfBoundsException(数组下标越界) ...(i[5][0]); //当通过数组下标来获取数组内元素时,[]内的值>=数组长度则报异常java.lang.ArrayIndexOutOfBoundsException(数组下标越界) ...2的那个一维数组的长度 } } 五、流程控制语句(if,switch,for,while,do...while) 1..../case为switch语句的入口,break为出口,从入口开始执行,直到遇到出口或代码执行完毕才结束case'a': System.out.println("优");
有符号左移位运算符"位模式向左移动,有符号右移位运算符”>>“将位模式向右移动。位模式由左操作数给出,要移动的位置数由右操作数给出。...无符号右移位运算符”>>>"将零移入最左侧位置,而">>"后的最左侧位置取决于符号扩展。 位运算符&执行位按位与操作。 位运算符^执行位按位异或操作。 位运算符|执行位按位包含或操作。...以下代码示例,SwitchDemo,声明了一个名为 month 的 int,其值表示一个月份。该代码根据 month 的值使用 switch 语句显示月份的名称。...if-then-else 语句可以测试基于值范围或条件的表达式,而 switch 语句仅基于单个整数、枚举值或 String 对象测试表达式。 break 语句是另一个有趣的点。...还讨论了何时使用哪种方法。 枚举类型 本节介绍了枚举,这是一种特殊的类,允许您定义和使用一组常量。
public 为最高级访问级别,private 为最低级访问级别。...private 级别的返回值。...---- 枚举类型访问权限 枚举中成员的访问级别继承自该枚举,你不能为枚举中的成员单独申明不同的访问级别。...Mark(Int,Int,Int) } var studDetails = Student.Name("Swift") var studMarks = Student.Mark(98,97,95) switch...", "泛型"] ["Swift", "泛型", "Where 语句"] ["Swift", "泛型", "Where 语句"]
用Verilog写一个简单的多功能移位寄存器,并在移位寄存器的基础上进行修改,利用移位功能形成流水灯的效果 基本的功能如下: 寄存器示意图见下方虚拟面板图 有两种改进方式: 第一种是把最后一个功能改成循环右移...,即此功能模式下,按一下时钟按键(代表时钟信号到来),高三位往右移一位,最低位移动到最高位。...,然后把 always @ (posedge C or posedge R) 语句中的C改成CLOCK。...----// wire CLOCK_divided; //使用时钟分频器模块产生1kHz的时钟。...,但实际板子上会有效果显示出来,实际板子上分配的led灯真的会有流水灯的自动移位动态效果,如果是使用实际的实验板可以观察实验板 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn
随着enum的引入,Java允许我们在switch语句中使用枚举类型,这使得代码更加简洁和易读。...EnumSet:一个专门为枚举设计的高效Set实现,内部使用位向量来存储枚举值,因此比传统的HashSet更加高效。它特别适用于需要存储枚举类型的集合。...传统的switch语句是控制流语句,而**switch表达式**则可以直接返回值,使代码更加简洁、优雅。这一特性也可以与枚举结合使用。 例子: 假设我们需要根据一天的枚举类型来返回当天的描述。...JDK 17:switch与null值 在传统的switch语句中,传入null会导致NullPointerException,因此开发者必须在进入switch语句前显式检查null值。...switch表达式和对null值的支持让枚举的使用更加灵活,开发者可以更简洁地处理各种逻辑,提高代码的可读性和可维护性。
Enum.8: Specify enumerator values only when necessary Enum.8: 只在必要时指定枚举值 Reason(原因) It's the simplest...可以避免重复的枚举值。默认的情况会分配一组容易被switch语句使用的连续值。...为了符合日常习惯(例如月)或者不希望连续值(例如用于获取标志变量中的特定标志位)时有必要定义枚举值。...Enforcement(实施建议) Flag duplicate enumerator values 标记重复的枚举值 Flag explicitly specified all-consecutive...enumerator values 标记显式定义所有枚举值为连续值情况。
移位运算符:int i = 2 << 3; 7、String 类常用方法 方法 描述 int length() 返回此字符串的长度 int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引...最后,如果程序不是多线程的,那么使用StringBuilder 效率高于StringBuffer。...10、switch 语句能否作用在byte 、long 、String 上?...Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5 然后进行下取整。 14、下面代码运行结果是多少?...double char、int、long、float、double 自动转换:运算过程中,低级可以自动向高级进行转换 强制转换:高级需要强制转换成低级,可能会丢失精度 规则: = 右边先自动转换成表达式中最高级的数据类型
枚举只是一种常量命名方式 某种状态值可以使用枚举 typedef NS_ENUM(NSInteger,LoginState){ LoginStateSuccess, LoginStateFail..., }; 在定义选项的时候,若这些选项可以彼此组合,各个选项之间可以通过按“按位或操作符”来组合,那么枚举值中可定义为2的幂 typedef NS_ENUM(NSInteger, UIInterfaceOrientation...中使用枚举来定义状态机,最好不要用default,如果使用default,当枚举中添加一个值,编译器不会发出警告,但是switch中不加default,编译器会有警告提示信息 typedef NS_ENUM...LoginStateFail: break; case LoginStateSuccess: break; } } 重点 应该用枚举值来表示状态机的状态...多个选项可以同时存在,可以使用枚举类型,可以将各选项值定义为2的幂,以便通过按位或操作将其组合 3.处理switch语句中不要带有default分支,这样加入新枚举值之后,编译器会提示开发者 参考
声明只读变量 continue 结束当前循环,开始下一轮循环 default 开关语句中的”其它”分支 do 循环语句的循环体 double 声明双精度浮点型变量或函数返回值类型 else 条件语句否定分支...(与 if 连用) enum 声明枚举类型 extern 声明变量或函数是在其它文件或本文件的其他位置定义 float 声明浮点型变量或函数返回值类型 for 一种循环语句 goto 无条件跳转语句 if...条件语句 int 声明整型变量或函数 long 声明长整型变量或函数返回值类型 register 声明寄存器变量 return 子程序返回语句(可以带参数,也可不带参数) short 声明短整型变量或函数...signed 声明有符号类型变量或函数 sizeof 计算数据类型或变量长度(即所占字节数) static 声明静态变量 struct 声明结构体类型 switch 用于开关语句 typedef 用以给数据类型取别名...(2)变量类型: char(一个字节,整数类型)、int、float(单精度浮点值)、double(双精度浮点值)、void(类型缺失) C语言中也允许定义各种其他类型的变量,如枚举、指针、数组、结构、
领取专属 10元无门槛券
手把手带您无忧上云