2012-02-29 65 views
0

的浮動這是我的代碼有:開始與許多不同的數字

CGFloat buttonGradient1Colors [] = { 
     [gradient1TopColor ], 1.0, 1.0, 0.16, 
     0.0, 0.0, 0.0, 0.11 
    }; 

但我想如果語句,其中基於一些浮動改變它的值增加一個,所以我需要事先設置CGFloat。我想:

CGFloat buttonGradient1Colors; 

CGFloat buttonGradient1Colors []; 

但第二個給了我一個錯誤就行了,而第一個進一步的給了我一個錯誤。有任何想法嗎?

編輯:

所以現在我有這樣的:

CGFloat buttonGradient1Colors [8]; 

    buttonGradient1Colors [8] = { 
     1.0, 1.0, 1.0, 0.16, 
     0.0, 0.0, 0.0, 0.11 
    }; 

,但它給了我2號線的「預期的表達」的錯誤。

+0

發佈實際的代碼,你在哪裏得到錯誤... – 2012-02-29 03:04:51

回答

0

您必須在創建C數組時指定大小。

如果你想改變這個值。你可以這樣做

CGFloat buttonGradient1Colors[8] = {1.0, 1.0, 1.0, 0.16, 0.0, 0.0, 0.0, 0.11}; 
if (condition) { 
    buttonGradient1Colors[index] = newValue; 
    ... 
} 
+0

現在指定大小。我仍然遇到錯誤。我上面發佈了更多代碼。 – Andrew 2012-02-29 03:12:36

+0

更新...希望這可以幫助你。 – Hanon 2012-02-29 03:18:49

+0

這可行,但它會佔用8行代碼,分別分配每個代碼。是否有另一種方法來改變價值,我可以在哪裏指定它們? – Andrew 2012-02-29 03:21:02

1

初始化時,陣列只能分配多個值:

CGFloat[] myFloats = { 1.0, 2.5, 3.6 }; 

這是不行的,不幸的是:

CGFloat[3] myFloats; 
myFloats = { 2.2, 3.5, 4.7 }; // error! 

如果條件合理簡單的說,你可以使用三元運算符在「一行」上這樣做:

CGFloat[] myFloats = { 
    (someBoolean ? 1.0 : 2.0), 
    ([someObject message] == 2 ? 2.2 : 3.3), 
    (someInt > 10 ? 4.5 : 8.0) 
}; 

噢,還有一點需要注意:如果你正在初始化一個C數組,那麼你的不要必須給出大小;編譯器會解決它。