我是一名学生,我的老师给了我并且已经解决了学习的练习,在他的练习中我看到了这一行:
#define MIN(a,b) ((a) < (b) ? (a) : (b))
我以前从未使用过#define。
我不明白什么:
((a) < (b) ? (a) : (b))
代表。
看起来像'?是一个比较不确定。任何人都可以帮助我吗?
我是一名学生,我的老师给了我并且已经解决了学习的练习,在他的练习中我看到了这一行:
#define MIN(a,b) ((a) < (b) ? (a) : (b))
我以前从未使用过#define。
我不明白什么:
((a) < (b) ? (a) : (b))
代表。
看起来像'?是一个比较不确定。任何人都可以帮助我吗?
它被称为条件运算符(或三元运算符)
#define MIN(a,b) ((a) < (b) ? (a) : (b))
方法:
if ((a) < (b)){
return a;
} else {
return b;
}
所以,如果你这样做:
int test = MIN(5,10);
测试将是 5
链接到 wiki 页面的问题:http: //goo.gl/bw2sL
#define
定义了一个新的预处理器宏,在这种情况下,将 MIN 代码放置在您放置它的位置;和“变量”被替换a
为b
您提供给宏作为输入的任何内容。
#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++ 标记问题时,请考虑非宏 max 和 min 函数。
#include <algorithm>
...
int i=std::min(5,6);