2013-01-04 52 views
0

此代码返回错误“无效的操作数的二进制表示双键和双”乘法阵列加倍

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

我想此做的是乘以1与2用b和3℃。 abc是从文本字段中提取的双值。我应该如何正确地做到这一点?

+2

使用for for()循环。 –

+0

@OliCharlesworth这个objc怎么样? –

+0

@NikolaiRuhe:'@“%f'”是客观-C,我想?这当然不是标准C.(两者都不是一个叫做'static'的变量......) –

回答

4

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

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

​​

或调用上矢量操作的库函数;例如iOS和OS X,你可以做(​​你还需要对加快框架进行链接):

#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]); 
+0

非常感谢! '我<3;'太可爱了:页 –