Bu, bağlıdır.
&&
, normal kısa-devre mantıksal işleç ise, o zaman iyi bir dizi noktası olduğu için iyidir. array[x]
yeni değeri kullanacaktır. &&
Eğer
, bir kullanıcı (veya kütüphane) gibi tanımlanmıştır aşırı operatörüdür, daha sonra bir kısa devre, ve aynı zamanda x--
değerlendirilmesi ve array[x]
değerlendirilmesi arasında bir dizi noktanın garantisi yoktur. Bu, kodunuza göre olası görünmüyor, ancak bağlam olmadan, kesin olarak söylemek mümkün değil. Bu şekilde düzenlemek için array
'un dikkatli tanımıyla mümkün olduğunu düşünüyorum.
Bu nedenle, operator&&
'u aşırı yüklemek neredeyse her zaman kötü bir fikirdir. Bu arada, if ((x > 0) && array[--x])
if ((x > 0) && array[--x])
'un da çok benzer bir etkisi vardır (yine de, shenaniganlara aşırı yüklenme olmadığı varsayımıyla) ve bence daha nettir. Fark, x
'un 0'a göre azaltıp azaltmadığı olup olmadığına bağlıdır.
Kodunuzu başkalarının okuması için temiz tutmayı unutmayın, iyi tanımlanmış olsa bile, birileri daha sonra değiştiğinde veya ifadeye eklediğinde bir sorun ortaya çıkarabilir. Sadece benim 2c –
İyi tanımlanmış olsa bile, böyle bir tür kodu kullanmamalısınız. Yazarken onu anlayabilirsin, ama bir sonraki peson olmayabilir. – codymanix
Bu kod, sonuçta hiç de kötü değil. Linux çekirdeğinde daha kötü kod gördük: D – knittl