为什么要用三目运算符
**这个问题应该时入门级的计算方式 我们可以用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;
}
测试结果
数据是捏造的 …以实际情况为准