C'deki kısa devre, mantıksal bir operatörün tüm argümanlarını değerlendirmediği zamandır.
Örneğin &&
, 0 && WhoCares
ne olursa olsun yanlış olacağı açıktır WhoCares
. Bu nedenle, C sadece değerlendirmeyi atlar WhoCares
. Aynı şey geçerli 1 || WhoCares
, her zaman doğru olacak. Bu nedenle, şöyle kod yazabiliriz
CanFireMissiles && FireMissiles()
Bu şekilde, imkansız bir operasyon yapmaktan kaçınırız. Füzeleri ateşleyemezsek kesinlikle denemek istemiyoruz. Bu, işaretçilerle, özellikle dosya işaretçileriyle yaygın olarak kullanılır.
bool isN(int* ptr, int n){
return ptr && *ptr == n;
}
Bu, gereksiz bilgi işlemden kaçınmak için diğer birçok yararlı yolla ortaya çıkar
isFileReady() || getFileReady()
Eğer ihtiyacımız yoksa ekstra iş yapmaktan kaçınır.
&&
Operatörün değerlendirilmesinde bir optimizasyondur .