Portanto, conclui-se que & é um operador que nos permite acessar e modificar um endereço de memória de uma variável.
O operador && é um operador lógico. A função dele é interligar duas condições e retornar true ou false. O operador lógico && só vai retornar verdadeiro (true), se todas as condições forem verdadeiras.
|| OU lógico, disjunção (operador binário). Uma expressão usando && é verdadeira somente se ambos os operadores forem verdadeiros (não zero). Uma expressão usando || é falsa somente se ambos os operadores forem falsos (zero). A precedência do operador de negação lógica é a mais alta (no mesmo nível que o ``-'' unário).
Trata-se de uma expressão lógica (ou Booleana) expressa através do operador de igualdade == (não confundir com a atribuição de valor, =). A avaliação de uma expressão lógica resulta num valor verdadeiro ou falso.
Uma expressão em linguagens de programação é uma combinação de valores, variáveis, operadores, e chamadas de funções que são interpretadas (avaliadas) de acordo com as regras de precedência e de associatividade particulares a uma determinada linguagem de programação, que calcula e, em seguida, produz (retorna) um valor ...