Objective-C运算符(?)和(:)

stu*_*ped 4 objective-c operators

什么做?:表示在这里?

#define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )
Run Code Online (Sandbox Code Playgroud)

das*_*ght 13

这是一个三元运算符(在C中也可用,Objective C是一个超集,以及从中借用的其他语言).

?首先评估之前的表达式; 如果它的计算结果为非零,则将之前的子表达式:作为整体结果; 否则,冒号后的子表达式:.

请注意,两侧的子表达式:需要具有相同的类型.

另请注意,MAX如果参数有副作用,使用宏进行计算可能会产生意外结果.例如,MAX(++a, --b)将对其中一个操作数产生双重副作用.


Tea*_*App 9

正如Kjuly所说,它应该大于签名,这只是一个if语句.

(a > b) ? a : b
Run Code Online (Sandbox Code Playgroud)

如果a大于b那么a将从MAX(a,b)函数返回,或者如果b更大则if语句将为false并将b返回.

C中的三元(条件)运算符

检查Evan的答案


Kju*_*uly 8

?:是一个三元运算符.什么((a) > (b)) ? (a) : (b)代表的是:

if (a > b)
  return a
else
  return b
Run Code Online (Sandbox Code Playgroud)

这里重新开始.