#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
参考资料来源:百度百科-三目运算符