Este código es para el cálculo del factor de potencia, pero no puedo entenderlo. ¿Qué hacen los símbolos (?) Y (:).
¿Cómo sustituyo el código estándar?
Pow_fac = (Pow_app > 0 && Pow_eff > 0) ? ((int64_t)Pow_eff * 100 + Pow_eff / 2) / Pow_app : 0;
Este código es para el cálculo del factor de potencia, pero no puedo entenderlo. ¿Qué hacen los símbolos (?) Y (:).
¿Cómo sustituyo el código estándar?
Pow_fac = (Pow_app > 0 && Pow_eff > 0) ? ((int64_t)Pow_eff * 100 + Pow_eff / 2) / Pow_app : 0;
Es un condicional en línea , básicamente una declaración en línea IF-THEN-ELSE:
Value = (test expression) ? (true value) : (false value);
Por ejemplo
Pow_fac = (Pow_app > 0 && Pow_eff > 0) ? ((int64_t)Pow_eff * 100 + Pow_eff / 2) / Pow_app : 0;
se puede reescribir como:
if (Pow_app > 0 && Pow_eff > 0)
Pow_fac = ((int64_t)Pow_eff * 100 + Pow_eff / 2) / Pow_app;
else
Pow_fac = 0;
Es un método muy útil para (como en este caso) decidir qué asignar a una variable, o tomar una decisión sobre qué valor pasar a una función.
Lea otras preguntas en las etiquetas c power-factor-correction