?
和在这里表示什么:
?
#define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )
这是一个三元运算符(在 C 中也可用,Objective C 是它的超集,以及从它借用的其他语言)。
先计算前面的表达式?
;如果它的计算结果为非零,则将之前的子表达式:
作为整体结果;否则,取冒号后的子表达式:
。
请注意,两边的子表达式:
需要具有相同的类型。
另请注意,MAX
如果参数有副作用,使用宏进行计算可能会产生意想不到的结果。例如,MAX(++a, --b)
将对其中一个操作数产生双倍的副作用。
正如 Kjuly 所说,它应该大于符号,这只是一个 if 语句。
(a > b) ? a : b
如果a
大于b
则将a
从MAX(a,b)
函数返回,或者如果b
大于则 if 语句将为 false 并b
返回。
检查埃文的答案
这是一种条件的简写符号。一种 ?乙:丙。
如果 a 为真,则为 b,否则为 c。
我相信这应该是:#define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )
所以基本上,如果a大于b,那么a,否则b