2012-02-29 26 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数组,那么你的不要必须给出大小;编译器会解决它。