乘法数组加倍

时间:2013-01-04 20:55:54

标签: objective-c arrays math double

此代码返回错误'二进制表达式的无效操作数double和double'

double staticDouble[3] = {1,2,3};
double dynamicDouble[3] = {a, b, c};
double resultTest = static * dynamic;
NSLog(@"%f",resultTest);

我想要做的是将1乘以a,将2乘以b,将3乘以c。 abc是从文本字段获取的double值。我该怎么做呢?

1 个答案:

答案 0 :(得分:4)

问题是staticdynamic是数组,并且数组没有*运算符;仅适用于“算术”类型。 (另外,有一个名为static的数组是个问题,但为了回答你实际提出的问题,我将忽略它。

两个选项:一次计算一个产品:

double resultTest[3];
for (int i=0; i<3; ++i) resultTest[i] = static[i] * dynamic[i];

或调用对向量进行操作的库函数;例如,在iOS或OS X上,您可以这样做(您还需要链接到Accelerate框架):

#include <Accelerate/Accelerate.h>

...

double resultTest[3];
vDSP_vmul(static, 1, dynamic, 1, resultTest, 1, 3);

(对于大小为3的数组,这有点过分;如果您将专门使用这样的小数组,您可能需要定义自己的函数或使用针对小型修复大小的向量操作的库,例如GLKit)。

打印结果会遇到同样的问题;没有格式字符串来打印数组的内容,因此您需要一次打印一个元素:

for (int i=0; i<3; ++i) NSLog(@"%f ", resultTest[i]);