Tak, to ma znaczenie.(przynajmniej pod kątem samego działania kodu).
@EDIT: Wyjaśnienie rozumowania
@Avernis wspomniał, że te warunki dotyczą się many i wciśnięcia klawisza, zatem można wnioskować że ten blok znajduje się wewnątrz pętli, zatem mamy coś w stylu:
// jakiś kod
if ( expr1)
{
if(expr2)
{
// jakaś rekacja
}
}
// jakiś kod
Załóżmy, że expr1 i expr2 to (zamiennie): sprawdzenie czy ilość many jest większa od zera oraz sprawdzenie czy klawisz jest wciśnięty.
Powyższy zapis kodu jest równoważny także z takim zapisem (ponieważ pomiędzy blokami if(expr1) i if(expr2) nie ma wspólnych instrukcji):
if(expr1 && expr2)
Jak widzimy całość się sprowadziła do prostego wyrażenia. pytanie brzmi: "Czy && jest relacją zwrotną (czyli czy expr1 && expr2 <=> expr2 && expr1)?" Otóż nie do końca, wiemy że wynik (efekt) będzie identyczny, ale istnieje pewna bardzo istotna różnica: jeżeli w expr1 && expr2, expr1 jest fałszywe, to expr2 nie zostanie wykonane/sprawdzone! (pisałem o tym tutaj: http://szymonsiarkiewicz.pl/artykuly/programowanie/cc-wszystko-co-chcielibyscie-wiedziec-ale-boicie-sie-zapytac/ )
Czyli w przypadku operacji && w pierwszej kolejności bardziej opłaca się sprawdzać na początku te warunki, które mają większa prawdopodobieństwo że będą fałszywe.
Wracając do naszego przykładu bardziej opłaca się najpierw sprawdzić, czy przycisk myszki jest wciśnięty, a dopiero później należy sprawdzić czy ilość many jest wystarczająca, dzięki temu zaoszczędzamy jedno porównanie (i prawdopodobnie jeden skok, zależy od kompilatora), w przypadku pętli która wykonuje się setki razy na sekundę potrafi to zrobić sporą różnicę.