C语言三目运算符计算三个数中的最大值及最小值

在电控中,如果使用了中点平移法SVPWM,我们就需要判断三个数中的最大值及最小值,如果用if-else,那么程序代码就很长且效率不高,这里我介绍一种使用三目运算符的方法,代码简洁。

uvw_min = u < v ? u < w ? u : w : v < w ? v : w;
上面的式子是个三目运算符的多次嵌套,我们按照结合律性对其进行分解,最终可以得出:
uvw_min = u < v ? (u < w ? u : w) : (v < w ? v : w);
对上面的式子进行分析,如果(u < v)&&( u < w),则uvw_min = u;如果(u >= v)&&( v < w),则uvw_min = v;如果(u < v)&&( u >= w),则uvw_min = w;如果(u >= v)&&( v >= w),则uvw_min = w。最终可以将三个数中的最小值给算出来。
那么如何求三个数中的最大值呢?下面直接给出公式。
uvw_max = u > v ? u > w ? u : w : v > w ? v : w;
对上面进行化简得:
uvw_max = u > v ? (u > w ? u : w) : (v > w ? v : w);
对上面的式子进行分析,如果(u > v)&&( u > w),则uvw_max = u;如果(u <= v)&&( v > w),则uvw_max = v;如果(u > v)&&( u <= w),则uvw_max = w;如果(u <= v)&&( v <= w),则uvw_max = w。最终可以将三个数中的最大值给算出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值