如果我有一個布爾和一些代碼可能會改變它,然後我想將它設置爲true
,我應該檢查它是否是false
?在C++中設置它的值之前檢查變量是否更好?
例如:
bool b = false;
// Some code
// Here "b" can be true or false
if (cond) {
b = true;
}
VS
bool b = false;
// Some code
// Here `b` can be `true` or `false`
if (cond && !b){
b = true;
}
哪個更快?
注意:
我問這個是因爲以下實施Sieve of Eratosthenes的:http://bloc.gerardfarras.com/wp-content/uploads/2011/12/erastotenes.txt
if ((i % divisor == 0) && (numsprimers[i] == 0)) {
numsprimers[i] = 1;
}
(如果numsprimers[i]==1
這意味着i
不是質數,如果是0,則可以是素數或不是)
另一種將它想象爲:「爲什麼要檢查?只是覆蓋!」 – Mysticial
@Mysticial其實我記得一個程序通過檢查一個布爾值來獲得巨大的速度提升,然後覆蓋它而不是覆蓋它。我沒有一個基準,但也許有一個值得去做... –
@SethCarnegie它是一個用戶定義的類型嗎? – Mysticial