Если вы решите пойти с ветвлением, то можете сначала проверить общий случай. Это немного более читабельно и должно быть немного лучше в плане производительности.
if(uRatio <= 1) {
iNormVal = iVal;
}
else {
iNormVal = iVal / uRatio;
}
Чтобы быть более читабельным, вы можете добавить локальную переменную с хорошим именем, которая содержит результат выражения.
unsigned int uSmallRatio = uRatio <= 1;
if(uSmallRatio) {
iNormVal = iVal;
}
else {
iNormVal = iVal / uRatio;
}
Компилятор может оптимизировать это в тот же машинный код, что и первый подход. Хотя я не уверен в этом.
Точно так же вы могли бы сделать это, но это не красиво:
iNormVal = uRatio <= 1 ? iVal : iVal / uRatio;
Наконец, другой подход будет:
iNormVal = iVal;
if(uRatio > 1) { /*explain why you do this so it won't be changed by somebody else*/
iNormVal = iVal / uRatio;
}
Я уверен, что есть и другие подходы, которые стоит рассмотреть.
Привет ...