我是一名学生,我的老师给了我锻炼已经解决了学习,在他的练习中我看到了这一行:
#define MIN(a,b) ((a) < (b) ? (a) : (b))
我之前从未使用过#define。
我不明白:
((a) < (b) ? (a) : (b))
代表。
看起来好像'?'比较人不确定。有人可以帮帮我吗?
答案 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代码;将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 ++标记问题时,请考虑非宏最大和最小函数。
#include <algorithm>
...
int i=std::min(5,6);