Я стараюсь сделать очень эффективный код на C ++. Мне сказали, что я должен по возможности избегать условий. Поэтому я думал, что преобразование типов может сделать эту работу. Код с условием if будет выглядеть так:
double a = .512; // some real number
double x = 1.1; // a coordinate that gets changed when if condition is true
a *= a; // a squared
if(a >= 1){x += .1;}
Я бы избежал условия if следующим образом.
double a = .512; // some real number
double x = 1.1; // a coordinate that gets changed when if condition is true
a *= a; // a squared
x += static_cast<bool>(static_cast<int>(a)) * .1
Сначала преобразуется a
в int
. Это дает 0
для a<1
и ненулевое int
для a>1
. Затем второе преобразование преобразует все ненулевые значения int
s в true
.
Но так ли это быстрее? Есть ли проблемы, с которыми я мог бы столкнуться, используя этот метод?