switch, case, otherwise
执行多组语句中的一组
语法
switchswitch_expressioncasecase_expressionstatementscasecase_expressionstatements... otherwisestatementsend
说明
switch 计算表达式并选择执行多组语句中的一组。每个选项为一个 case。 switch_expression, case case_expression, end
switch 块会测试每个 case,直至一个 case 表达式为 true。case 在以下情况下为 true:
对于数字,
。case_expression==switch_expression对于字符向量和字符串,
strcmp(。字符向量元胞数组是一种特殊情况,即如果元胞数组的至少一个元素匹配,则case_expression,switch_expression) == 1case将匹配。对于支持
eq函数的对象,。重载的case_expression==switch_expressioneq函数的输出必须为逻辑值或可转换为逻辑值。对于元胞数组
case_expression,元胞数组的至少一个元素与switch_expression匹配,如上述对数字、字符向量和对象的定义。
当 case 表达式为 true 时,MATLAB® 执行对应的语句,然后退出 switch 块。
计算的 switch_expression 必须为标量或字符向量。计算的 case_expression 必须为标量、字符向量或者标量或字符向量的元胞数组。
otherwise 块是可选的。仅当没有 case 为 true 时,MATLAB 才会执行这些语句。
示例
提示
case_expression不能包含关系运算符(例如<或>)来与switch_expression进行比较。要测试不相等性,请使用if, elseif, else语句。MATLAB
switch语句不会像 C 语言的switch语句一样失效。如果第一个case语句为true,则 MATLAB 不会执行其他case语句。例如:result = 52; switch(result) case 52 disp('result is 52') case {52, 78} disp('result is 52 or 78') end
result is 52
在该 case 内定义特定 case 中的代码所需要的变量。由于 MATLAB 仅执行任何
switch语句的一个 case,因此一个 case 内定义的变量不适用于其他 case。例如,如果当前工作区不包含变量x,则仅定义x的情况可以使用它:switch choice case 1 x = -pi:0.01:pi; case 2 % does not know anything about x end
MATLAB
break语句会结束for或while循环的执行,但不结束switch语句的执行。此行为不同于 C 语言中break和switch的行为。
扩展功能
版本历史记录
在 R2006a 之前推出
