2013-01-04 55 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;'太可愛了:頁 –