C中的MAX和MIN是多少? #define函数

时间:2013-02-25 08:38:05

标签: c++ c max c-preprocessor min

我是一名学生,我的老师给了我锻炼已经解决了学习,在他的练习中我看到了这一行:

 #define MIN(a,b) ((a) < (b) ? (a) : (b))

我之前从未使用过#define。

我不明白:

((a) < (b) ? (a) : (b))

代表。

看起来好像'?'比较人不确定。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:5)

它被称为条件运算符(或三元运算符)

#define MIN(a,b) ((a) < (b) ? (a) : (b))

意思是:

if ((a) < (b)){   
  return a;  
} else {   
  return b; 
}

所以如果你愿意的话:

int test = MIN(5,10);

测试将是5

链接到维基页面的麻烦:http://goo.gl/bw2sL

答案 1 :(得分:3)

#define定义了一个新的预处理器宏,在这种情况下,在你放置它的位置放置MIN代码;将ab“变量”替换为您为宏提供的任何内容作为输入。

 #define MIN(a,b) ((a) < (b) ? (a) : (b))

 MIN(5,6);
 //gets expanded to
 ((5) < (6) ? (5) : (6))

实际表达式是使用三元运算符,根据表达式的评估返回A或B,你可以在这里阅读更多相关信息:

http://en.cppreference.com/w/cpp/language/operator_other

最后,当您使用c ++标记问题时,请考虑非宏最大和最小函数。

#include <algorithm>
...
int i=std::min(5,6);