在C语言中,switch语句可以理解为一种开关语句,通常与case、break、default 结合使用,对程序执行流程进行控制。
当然,switch语句在具体执行环境中,也不是只有单纯的开和关,它也可以是一个嵌套的多分支控制流程。
switch语句的语法结构:
switch(表达式)
{
case 表达式1:语句A
case 表达式2:语句B
...
default:语句X
}
这里需要注意,switch()括号内的表达式必须是整数 int 或 uint 类型,而不能是其它类型。
在程序运行上,一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。
在 switch 语句中,如果不需要多个分支重叠的结果,那么每个 case 语句的结尾就需要添加 break 语句,否则将出现多个分支重叠。
在 switch 语句中,不要忽略 default 语句,为了处理错误及检查默认情况,即使程序真的不需要 default 处理,也应该保留此语句:default: break;
在mql语言中,switch 语句也是在很多地方都可以用到的。在实际开发外汇ea编程使用该语句时,需要注意它的一些规则:
- 原则上,在一个 switch 语句中可以有任意数量的 case 语句。但是在实际开发中,为了程序的可读性与执行效率,应该尽量减少 switch 语句中的 case 语句。
- case 语句的结构:每个 case 后跟一个比较的值和一个冒号(如:case 0:)。
- case 后的值的类型必须与 switch()括号中的变量的数据类型相同,也必须是一个常量或字面量,而不能是一个刻意构造的函数变量。
- 如果被测试的变量等于 case 中的常量时,即执行 case 后面的语句,直到遇到 break 语句为止。
- 遇到 break 语句时,switch 语句将完全终止,程序运行将直接跳出 switch 去执行它后面的下一行。
- 如果 case 语句后面不带 break,那么控制流将会继续下一个 case,直到遇到 break 为止,在执行某种开仓或平仓的操作时,可以使用,但如果是输出某种结果,则要考虑到结果的重叠性。
在mql4语言中,订单类型OrderType()一共6个,分别是OP_BUY,OP_SELL,OP_BUYLIMIT,OP_SELLLIMIT,OP_BUYSTOP,OP_SELLSTOP,对应值依次是0、1、2、3、4、5。要输出订单类型,那么我们就可以用switch 语句,参考代码如下:
string Tktype(int type)
{
switch (type)
{
case 0:return("buy");break;
case 1:return("sell");break;
case 2:return("buylimit");break;
case 3:return("selllimit");break;
case 4:return("buystop");break;
case 5:return("sellstop");break;
default:return("");
}
return("");
}
//调用
int Tk_Type = OrderType();
Tktype(Tk_Type);