- 2.6.1.隐式类型转换
- 2.6.2.算术类型转换
- 2.6.3.显式类型转换
2.6.3.显式类型转换
对于显式类型转换,MQL5 支持两种形式的符号:C 语言风格和“函数式”。C 语言风格的语法如下:
target t = (target)s; |
其中 target 是目标类型的名称。任何表达式都可以是数据源 s。如果其中执行了任何运算,则必须将表达式放入圆括号中,以便类型转换适用于整个表达式。
另一种“函数式”语法如下所示:
target t = target(s); |
我们来看几个例子。
double w = 100.0, v = 7.0;
|
此处,两个实数相除的结果被显式转换为 int 类型。这样程序员确认了丢弃小数部分的意图,编译器不会发出警告。应该注意的是,MQL5 有一组函数,用于以各种方式对实数进行舍入(参见 数学函数)。
相反,如果希望对整数执行运算并得到实数结果,则需要对操作数应用类型转换(在表达式中):
int x = 100, y = 7;
|
转换其中一个操作数就足以自动将其余的操作数转换为相同类型。
如有必要,您可以连续执行多个类型转换操作。因为转换操作具有右结合性,所以按从右到左的顺序应用目标类型。在下面的例子中,我们将商转换为 float 型(这种转换能够以更紧凑、更少字符表示值),然后转换为 string。如果没有显式转换为 string,我们将遇到编译器警告“数字隐式转换为字符串”。
Print("Result:" + (string)(float)(w / v)); // Result:14.28571 |
切勿只是为了避免编译器警告而使用显式类型转换。如果没有实践依据,那就是在掩盖程序中的潜在错误。