其他运算
指数 ( [] )
在数组第一元素的位置,表达式值为i的系列数变量值。
示例:
array[i] = 3; // 数组的3的计算值到第i个元素。 |
只有整数能够成为数组指数。四维以下的数组是禁止的。每组的检测是从0到测量大小-1。 特定情况下,对于维数组由50 个元素组成,参照的第一个数组将为[0],这样最后一个数组将是[49]。
访问超出数组,正在执行的子系统生成危险错误,程序停止。
调用x1, x2 ,..., xn自变数函数
每一个自变数可以显示一个常数,一个变量和相应类型表达式。自变数的通过必须根据通道命令。
用此函数返回表达式值。如果返回的表达式值为空,一些函数不能进行中转。注意表达式按照这个顺序执行expressions x1,..., xn 。
示例:
int length=1000000;
|
逗号操作符 ( , )
从左到右的表达式用逗号分开。所有表达式的计算是从左至右的。结果类型和值相互吻合,说明表达式是正确的。参量列表可以作为范例被通过(参阅上文)。
示例:
for(i=0,j=99; i<100; i++,j--) Print(数组[i][j]); |
点操作符 ( . ) #
对于直接访问结构和类的公共成员 时,使用点操作符。语法:
Variable_name_of_structure_type.Member_name |
示例:
struct SessionTime
|
范围解析操作符 ( :: ) #
mql5中每个函数都有其执行范围。例如,Print()系统函数可以在全局范围使用。Imported函数导入时使用。classes函数用在类的范围。范围解析操作语法如下:
[Scope_name]::Function_name(parameters) |
如果没有范围名,就属于全局范围函数。如果没有范围解析操作,可以在最近范围内找到函数。如果本地范围没有函数n,需要全局搜寻函数。
范围解析操作也用在 确定函数-类成员。
type Class_name::Function_name(parameters_description)
|
在一个程序使用不同执行上下文的几个同名函数可能会引起歧义。无明确范围规范的函数调用的优先顺序如下:
- 类方法。如果在类中设置了无指定名称的函数,那么移到下一级别。
- MQL5 函数。如果语言没有这种函数,那么移到下一级别。
- 用户定义全局函数。如果没有找到有指定名称的函数,那么移到下一级别。
- 导入函数。如果没有发现有指定名称的函数,那么编译器返回一个错误。
若要避免函数调用歧义,就要使用范围解析操作,始终明确指定函数范围。
示例:
#property script_show_inputs
|
获得数据类型大小或者任何类型数据对象大小的运算 ( sizeof ) #
使用sizeof运算,标识符或者类型大小可以确定。 sizeof 运算有以下格式:
示例:
sizeof(expression) |
任何标识符,或者类型名都在括号中,可用作表达式。注意空类型名不可以使用,标识符不属于二进制,也不是函数名。
如果表达式为静态数组名(例如给出第一尺寸),那么结果就是整个数组大小(例如类型长度产品)。如果表达式是动态数组名(没有确定第一尺寸),结果就是动态数组对象大小。
当sizeof用在结构或者类型名时,或者结构或者类型标识符时,结果就是结构或者类的真实大小。
示例:
struct myStruct
|
在编辑步骤计算大小。
另见