解释C宏

时间:2011-06-27 01:26:36

标签: c c-preprocessor

#define MAX(a,b) ((dx > dy) ? dx : dy)

有人会介意打破((dx> dy)?dx:dy)部分? 这来自控制台课程1-60。

6 个答案:

答案 0 :(得分:8)

大致相当于:

int MAX (int dx, int dy)
{
  if (dx > dy)
    return dx;
  else
    return dy;
}

这也不正确。它应该是:

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

答案 1 :(得分:2)

您正在查看Ternary operator.

答案 2 :(得分:1)

正如所写,这条线对我来说没有意义。但

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

以伪代码粗略地翻译为

#define MAX(a,b)  if (a > b) then a else b

答案 3 :(得分:1)

test ? expr1 : expr2是三元运算符。如果expr1为真,则此表达式评估为test,否则评估为expr2

答案 4 :(得分:0)

这意味着如果dx大于dy则选择dx,否则选择dy。

答案 5 :(得分:0)

int MAX (int dx, int dy)
{
  if (dx > dy)
    return dx;
  else
    return dy;
}