布尔? :操作语法

时间:2013-01-08 13:49:38

标签: objective-c c

  

可能重复:
  What does the question mark and the colon (?: ternary operator) mean in objective-c?

我见过使用类似......的语法的代码。

someValue = someBoolean ? valueOne : valueTwo;

或类似的东西。

我从来没有用过这个,我不确定它叫什么。

请有人解释如何使用它或提供有关它的资源的链接。

6 个答案:

答案 0 :(得分:8)

这是三元组织。

评估someBoolean条件。

如果确实如此,则将valueOne传递给someValue

如果为false,则将valueTwo传递给someValue

等于:

if(someBoolean)
{
   someValue = valueOne;
}
else
{
   someValue = valueTwo;
}

这是一个很好的链接,解释了ternary operator

答案 1 :(得分:3)

这称为三元运算符(?:)

1 ? 2 : 3

1是条件。

当p为真时,执行

2。

当1为假时,执行

3。

类似于:(以下不是正在运行的代码,1,2,3仅显示某些表达式和语句的占位符。

 if(1){ //condition
     2 //true
 }
 else{
     3 //false
 }

你可以缩短它:

int bigger;
(10<100) ? bigger=100 : bigger=10;

简短地说:

int bigger = (10<100) ? 100 : 10 ;

注意:

它的优先顺序是最少的,它比if-else和switch case语句慢得多。

答案 2 :(得分:2)

ternary operator (也称为 conditional operator )。您可以在此link找到解释。

基本上你的表达是说,如果someBoolean为真,someValue将获得valueOne,否则会获得valueTwo

类似于:

 if(someBoolean)
 {
    someValue = valueOne;
 }
 else
 {
    someValue = valueTwo;
 }

在代码中提供较少的可见性。如果您想要分配一个取决于一个条件的值,我建议使用此运算符。

请注意,它不是Objective-C特有的表达式,您也可以在CC++中使用它。

答案 3 :(得分:0)

赋值的结果是valueOne是条件为true,valueTwo如果条件为false。

here on wikipedia。它也使用其他语言,只需跳过它们并查看C语法示例。

答案 4 :(得分:0)

假设用户需要回答一些问题,并且如果他错了,你会将视图的背景颜色更改为红色,如果他是正确的话,则将其更改为绿色。

- (void)handleAnswer:(BOOL)correct {
    UIColor *color = (correct) ? [UIColor greenColor] : [UIColor redColor];
    self.view.backgroundColor = color;
}

答案 5 :(得分:0)

它的作用与以下相同

if (someBoolean)
{
    someValue = valueOne;
}
else
{
    someValue = valueTwo;
}