4

?和在这里表示什么:

#define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )
4

4 回答 4

13

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

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

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

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

于 2012-07-29T01:10:05.833 回答
9

正如 Kjuly 所说,它应该大于符号,这只是一个 if 语句。

(a > b) ? a : b

如果a大于b则将aMAX(a,b)函数返回,或者如果b大于则 if 语句将为 false 并b返回。

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

检查埃文的答案

于 2012-07-29T01:09:51.190 回答
8

?:是三元运算符。((a) > (b)) ? (a) : (b)代表的是:

if (a > b)
  return a
else
  return b

请在此处参考。

于 2012-07-29T01:10:23.547 回答
4

这是一种条件的简写符号。一种 ?乙:丙。

如果 a 为真,则为 b,否则为 c。

我相信这应该是:#define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )

所以基本上,如果a大于b,那么a,否则b

于 2012-07-29T01:08:49.710 回答