#define max(a,b) a>b?a:b中的?和:分别是什么意思啊

如题所述

#define max(a,b) a>b?a:b 中的?和:是三目运算符的固定格式,意思是:条件 ? 结果1 : 结果2 里面的?号是格式要求,也可以理解为条件是否成立,条件成立为结果1,否则为结果2。

对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。

带参宏定义,用宏名MAX表示条件表达式 (a>b)?a:b ,形参a,b均出现在条件表达式中。程序中 max=MAX(x,y) 为宏调用,实参x,y,将代换形参a,b。宏展开后该语句为: max=(x>y)?x:y;  用于计算x,y中的大数。

扩展资料:

三目运算符运算规则:

一个条件表达式绝不会既计算x,又计算y。条件运算符是右结合的,也就是说,从右向左分组计算。例如,a ? b : c ? d : e将按a ? b : (c ? d : e)执行。

在 C++ 中,所有表达式都有一个值,包括条件表达式。如果第一个子表达式为真,则条件表达式的值为第二个子表达式的值,否则它就是第三个子表达式的值。

使用条件表达式值的赋值语句示例:a = (x > 100) ? 0 : 1; 分配给变量 a 的值将为 0 或 1,具体是哪个则取决于 x 是否大于 100。该语句具有与以下 if-else 语句相同的逻辑:if (x > 100) a = 0 ; else a = 1;

参考资料来源:百度百科-define

参考资料来源:百度百科-三目运算符

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-20
这是条件表达式的一种特殊写法
意思就是判断a>b是否成立,或者说a>b返回值是真还是假(1还是0)
如果返回真,则整个表达式返回冒号左边的值,也就是a
如果返回假,则整个表达式返回冒号右边的值,也就是b
这个宏就是定义一个函数求a和b中的最大值本回答被提问者和网友采纳
第2个回答  2012-12-15
这是一个宏定义,可以在代码中直接调用,这是一个判断的字符组合,如果a>b,则输出a,否则,输出b。
第3个回答  2012-12-15
#define语句是一个宏定义
a>b?a:b 是C语言的一个三目运算符

类似于
{
if(a>b) return a;
else return b;

}
“?”前面是一个bool表达式,为真取“:”前面的数,即a,为假取后面的数,即b
相似回答