Hola, nocturno66, perdona que te contradiga con lo de que no hay diferencia entre & y &&, pero si hay una pequeña diferencia. El operador & se usa para realizar la operacion AND a nivel de bits, es decir, si tenemos por ejemplo 0b01010 & 0b00111 el resultado que da la operacion es 0b00010. Si lo hacemos con el && lo que esta realizando logica AND de las dos variables, es decir, si tenemos lo mismo que antes 0b01010 && 0b00111 el resultado de la operacion es 0b00001, lo que es lo mismo realiza la misma operacion que el &, pero el resultado final de la operación && va a ser 1 si el resultado de aplicar el & es mayor que 0, y va a ser 0 en caso contrario.
Un saludo.