1 定义
三目运算符由条件和表达式组成:
条件?表达式1:表达式2
等同于:
if 条件:
表达式1:
else:
表达式2
注意:
- 条件运算符的优先级低于关系运算符和算术运算符,但是高于赋值符,(ex:max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b);
- ?和:成对使用;
- 条件运算符结合方向从右至左。(ex:a>b?a:c>d?c:d应理解为a>b?a:(c>d?c:d))
2 应用
通常用于宏定义,在做图像矩阵运算时求最大值,最小值,以及数据截断。
/*求两者最大值*/
#define MAX(a, b) ((a) > (b) ? (a) : (b))
/*求两者最小值*/
#define MIN(a, b) ((a) < (b) ? (a) : (b))
/* 数值范围保护 */
#define CLIP(a, l, h) (MIN_V(MAX_V(a, l), h))
3 优点
- 代码简介;
- 运算效率高。