2.6.5 数组运算

2.6.5 数组运算

数组运算时,在所有需要Real子类型表达式的上下文中,Integer子类型的表达式也可以使用;Integer表达式被自动转换为Real。若无特别说明,下文中的数值类型指Real或Integer类型的子类型。

2.6.5.1 等式与赋值

标量、向量、矩阵和数组的等式“a=b”与赋值“a:=b”是基于元素定义的,并且要求两个对象具有相同的维数和匹配的维数长度。操作数要求类型等价。数组等式与赋值规则见表2-8。

表2-8 数组等式与赋值规则

2.6.5.2 加减

数值标量、向量、矩阵和数组的加“a+b”与减“a-b”是基于元素定义的,并要求size(a)=size(b),a和b均为数值类型。

字符串标量、向量、矩阵和数组的加“a+b”定义为从a到b的对应元素逐个字符串连接,并要求size(a)=size(b)。字符串类型的减法未定义。数组加减运算规则见表2-9。

表2-9 数组加减运算规则

例如:

2.6.5.3 乘法

数值标量s与数值标量、向量、矩阵或数组a的标量乘法“s*a”或“a*s”是基于元素定义的,见表2-10。

表2-10 数值标量与数组之间的乘法运算规则

例如:

数值向量和矩阵的乘法“a*b”只针对表2-11所列组合定义。

表2-11 数值向量和矩阵的乘法运算规则

例如:

2.6.5.4 除法

数值标量、向量、矩阵或数组a与数值标量s的除法“a/s”是基于元素定义的,结果总是Real类型,见表2-12。如果要得到带有截断的整数除法,可使用函数div()。

表2-12 数组与数值标量的除法运算规则

例如:

2.6.5.5 求幂

如果“a”和“b”都是数值类型的标量,求幂“a^b”定义为C语言中的函数pow()。如果“a”是一个数值方阵,“s”是Integer子类型的标量,并且s≥0,求幂“a^s”是有效的。求幂通过反复相乘进行。例如:

提示:非整型指数是不允许的,因为这需要计算“a”的特征值和特征向量,不再是一种元素操作。

2.6.5.6 布尔运算

操作符“and”和“or”包括两个Boolean类型表达式,可以是标量或维数匹配的数组。操作符“not”包括一个Boolean类型的表达式,可以是标量或数组。结果为按位逻辑操作。类似于常规编程语言,“and”和“or”遵循短路计算的原则,即如果一个表达式的值不影响计算结果,则该表达式将不被计算。

例如:

2.6.5.7 关系运算

关系操作符<、<=、>、>=、==、<>仅用于标量,数组之间不允许进行关系运算。