Condição complexa
O problema anterior pode ser resolvido de forma mais curta usando condições complexas. 
Vamos entender o que é uma 
condição complexa.
Condições simples consistem em uma relação (maior que, menor que, etc.). Mas às vezes é necessário combinar condições simples em outras mais complexas. Por exemplo, está frio lá fora e está chovendo. Duas condições simples (está frio lá fora), (está chovendo lá fora) estão ligadas aqui por 
E.
 
Condição complexa - consiste em duas ou mais condições simples que são combinadas com operações lógicas .
 
Conectivos lógicos em C++
&& - multiplicação lógica (AND);
||  - adição lógica (OU);
!    - negação lógica (NÃO).
Multiplicação lógica (operação AND)  requer que duas condições sejam atendidas simultaneamente:
condição_1 && condição_2   
será avaliado como verdadeiro apenas se ambas as condições simples forem verdadeiras ao mesmo tempo.
Além disso, na linguagem de programação C, se 
condição_1 for falso, 
condição_2 não será verificado.
A multiplicação lógica (operação OR) requer pelo menos uma das seguintes condições:
condição_1 || condição_2
será avaliado como falso somente se ambas as condições simples forem falsas ao mesmo tempo.
Além disso, na linguagem de programação C, se a condição_1 for verdadeira, então condição_2 não será verificada.
Multiplicação lógica (NOT operação)
 !condição_1 
será avaliado como falso se condição_1  verdade e vice-versa.
Por exemplo, as duas condições a seguir são equivalentes:   A>B   e  !(A<=B).
 
Prioridade de execução de operações e relações lógicas
1. Operações entre colchetes.
2. Operação NÃO.
3. Relações lógicas >, <, >=, <=, ==, !=.
4. Operação I.
5. Operação OU.
Os parênteses são usados para alterar a ordem das ações.
 
Variáveis booleanas
Em muitas linguagens de programação é possível utilizar variáveis que armazenam valores booleanos ("true"/"false"). Em C++, tais variáveis podem assumir os valores true (true) ou false (false). Por exemplo, um trecho de programa: 
bool a, b;
a = verdadeiro;
b=falso;
cout << um || b;
Exibe 1 (que é true, false  é 0).
As variáveis booleanas são do tipo bool, em homenagem ao matemático inglês George Boole, o criador da álgebra da lógica.