У меня есть код, похожий на показанный ниже. Я упростил его, чтобы донести свою точку зрения. Он содержит массив. В первой части каждое значение массива за вычетом определенного значения сравнивается со значением маржи. Если все условия соблюдены, µ C должен прекратить выполнение простой функции. В противном случае µ C должен запускать вычисление со значениями массива. В этом вычислении есть несколько умножений, которые выполняются для каждого значения.
uint32_t value[8];
uint16_t othervalue;
if ((value[0] < othervalue && value[1] < othervalue && value[2] < othervalue && value[3] < othervalue && value[4] < othervalue && value[5] < othervalue && value[6] < othervalue && value[7] < othervalue)
{
othervalue = 100;
simplefunction();
}
else
{
calculatewithallvalues(values);
}
Я заметил, что, вероятно, я мог бы улучшить код. Вычисления в "else" должны выполняться только в том случае, если условие для этого значения c не выполняется. Поэтому в некоторых случаях расчет не нужно выполнять для каждого значения. Я придумал другой подход, используя для l oop. Однако этот код длиннее и, возможно, более запутан. Дополнительное значение if l oop в конце необходимо для учета возможности того, что все значения соответствуют условию.
uint32_t value[8];
uint16_t othervalue;
uint8_t calc_needed = 0;
int i;
for (i=0; i <7; i++)
{
if (value[i] < othervalue)
{
//do nothing
}
else
{
calculatewithvalue(values[i]);
calc_needed = 1;
}
if (calc_needed == 0)
{
othervalue = 100;
simplefunction();
}
Какое решение лучше или есть третье решение?