ciao ragazzi ho bisogno di aiuto , questa qui è la soluzione di un esercizio

codice:
int somma(int* vett, int N, int M){
int somma=0;
for(int i=0; i<N; i++)
for (int j=0; j<M; j++)
if ((i&&!(i%2))||(j&&!(j%2)))
somma+=vett[i*M+j];
return somma;
}

il problema mio è che non capisco cosa fa quell'if dentro agli altri due

codice:
 if ((i&&!(i%2))||(j&&!(j%2)))
cioè cosa vuol dire i&&! ??


mi potete aiutare ? ve ne sarei molto grato