Nếu bạn quyết định đi với phân nhánh sau đó bạn có thể kiểm tra đầu tiên đối với trường hợp chung. Nó có thể đọc được nhiều hơn một chút và nên có hiệu năng tốt hơn một chút.
if(uRatio <= 1) {
iNormVal = iVal;
}
else {
iNormVal = iVal/uRatio;
}
Để dễ đọc hơn, bạn có thể thêm biến cục bộ có tên tốt chứa kết quả biểu thức.
unsigned int uSmallRatio = uRatio <= 1;
if(uSmallRatio) {
iNormVal = iVal;
}
else {
iNormVal = iVal/uRatio;
}
Trình biên dịch có thể tối ưu hóa mã này vào cùng một mã máy như cách tiếp cận đầu tiên. Tôi không chắc chắn về điều này mặc dù.
Tương tự như vậy bạn có thể làm điều này không nhưng nó là đẹp:
iNormVal = uRatio <= 1 ? iVal : iVal/uRatio;
Cuối cùng cách tiếp cận khác sẽ là:
iNormVal = iVal;
if(uRatio > 1) { /*explain why you do this so it won't be changed by somebody else*/
iNormVal = iVal/uRatio;
}
tôi chắc chắn rằng có những cách tiếp cận khác để xem xét.
Kính trọng ...
Nguồn
2012-01-13 12:22:55
Bạn có thể cấu hình nó. – kennytm
Là các giá trị số nguyên hoặc đôi hoặc nổi? –
@Ed tiền tố i là int, u là unsigned int – nantonop