初出茅庐的小李第70篇博客之三目运算符求三个数的最大值

为什么要用三目运算符

**这个问题应该时入门级的计算方式 我们可以用if 也可以用 if else 等等方法很多 我这里记录一种个人感觉比较简洁的一种方法
**

Max = (UA>UB?UA:UB);   //通过比较得出一个较大值
Max = (Max>UC?Max:UC); //再次比较得到最后较大值
有的写法还计算了>= 我分析了一下就算是等于也不影响判断
就好比我跟我对象意见一致那就听对象的呗 

我本意其实是用来计算三相电压是否平衡的需要用到最大值-其中的一项然后计算偏差率

完整的计算程序

#include <stdio.h>

typedef unsigned int uint32_t;
typedef unsigned short int uint16_t;
typedef unsigned char uint8_t;


uint8_t Voltage_Unbalance_Check(void)
{
	uint32_t Max;
	uint32_t UA,UB,UC;
	
	UA = 250;
	UB = 210;
	UC = 220;
	
    Max = (UA>UB?UA:UB);
    Max = (Max>UC?Max:UC);
	
	printf("Max is : %d\r\n",Max);
	if( (10*(Max-UA)) > UA ||(10*(Max-UB)) > UB ||(10*(Max-UC))>UC )
		return 1;
	else 
		return 0;
}


uint8_t Current_Unbalance_Check(void)
{
	float Max;
	float IA,IB,IC;
	
	IA = 20.5;
	IB = 20.1;
	IC = 20.2;
	
    Max = (IA>IB?IA:IB);
    Max = (Max>IC?Max:IC);
	
	printf("Max is : %lf\r\n",Max);
	
	if( (3*(Max-IA)) > IA ||(3*(Max-IB)) > IB ||(3*(Max-IC))>IC )
		return 1;
	else 
		return 0;
}


int main(void)
{
	printf("电压不平衡检测结果:%d\r\n",Voltage_Unbalance_Check());
	printf("电流不平衡检测结果:%d\r\n",Current_Unbalance_Check());
	getchar();
	return 0;
}


测试结果

在这里插入图片描述
数据是捏造的 …以实际情况为准

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值