【问题标题】:Xcode compiler not accepting ternary operatorXcode 编译器不接受三元运算符
【发布时间】:2014-07-01 09:13:52
【问题描述】:

我正在使用这一小段代码:

CGFloat gradientLocations[2] = {1.0f, 0.0f};

不幸的是,它有一个错误,因为渐变指向一个方向并且没有正确旋转。所以我想用这样的方位角来修复它:

CGFloat gradientLocations[2] = self.isAzimuthDown ? {0.0f, 1.0f} : {1.0f, 0.0f};

但我不断收到错误,我不相信我是“:”...我的问题是 - 它有什么问题以及如何解决它?

【问题讨论】:

  • 刚刚在google上搜索,发现了这个stackoverflow.com/q/15877560/468724
  • 我搜索了一些完全不同的东西,因为我认为我正在访问索引号 2 上的数组中的一个项目(我知道非常错误)。所以我实际上并不知道,我正在寻找的是“数组初始值设定项”相关主题。我也用谷歌搜索了 xcode,而不是普通的 C...
  • 无论如何,感谢@InderKumarRathore 的提醒

标签: objective-c xcode ternary-operator


【解决方案1】:

该语言不支持数组初始值设定项中的条件表达式。您可以通过使用 memcpy 或在每个单独元素的单个初始化程序中使用条件表达式来解决此问题:

使用memcpy (demo):

CGFloat gradientLocations[2];
memcpy(gradientLocations, self.isAzimuthDown ? (CGFloat[]){0.0f, 1.0f} : (CGFloat[]){1.0f, 0.0f}, sizeof(gradientLocations));

在标量表达式中使用条件 (demo):

CGFloat gradientLocations[2] = {self.isAzimuthDown ? 0.0f : 1.0f, self.isAzimuthDown ? 1.0f : 0.0f};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-12
    • 2015-09-21
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 2021-06-18
    相关资源
    最近更新 更多