敲代码的时候遇到了报错:switch quantity not an integer。上网查了后才发现自己对 switch 语句的使用并不了解。
语法:
switch ( 常量表达式 )
{
case 常量1 :语句;
case 常量2 :语句;
case 常量3 :语句;
...
case 常量n:语句;
default :语句;
}
当常量表达式所表达的量与其中一个 case 语句中的常量相符时,就执行此 case 语句后面的语句,并依次下去执行后面所有 case 语句中的语句,除非遇到break;语句跳出switch语句为止。如果常量表达式的量与所有case语句的常量都不相符,就执行default语句中的语句并跳出switch语句。
需要注意的几点:
- 只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
- switch()的参数类型不能为实型 。
- case标签必须是常量表达式(constantExpression),如42或者’4’。
- case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
试错
switch 里用实型报错:switch quantity not an integer
switch 里用字符串报错:switch quantity not an integer,如果用 C++ STL 里的 string 类型也是一样的,或者用其他的复杂类型也是报这个错。
case 上用变量报错:the value of ‘n’ is not usable in a constant expression
case 里的内容出现了重复报错:duplicate case value && previously used here