CURSO DE C

 

Operadores Relacionais e Lógicos

Os operadores relacionais do C realizam comparações entre variáveis. São eles:

 

Operador  

>= 

<= 
== 
!= 
Ação  
Maior do que 
Maior ou igual a 
Menor do que 
Menor ou igual a 
Igual a 
Diferente de 

Os operadores relacionais retornam verdadeiro (1) ou falso (0). Para verificar o funcionamento dos operadores relacionais, execute o programa abaixo:

/* Este programa ilustra o funcionamento dos operadores relacionais. */
#include <stdio.h>
int main()
{
    int i, j;
    printf("\nEntre com dois numeros inteiros: ");
    scanf("%d%d", &i, &j);
    printf("\n%d == %d é %d\n", i, j, i==j);
    printf("\n%d != %d é %d\n", i, j, i!=j);
    printf("\n%d <= %d é %d\n", i, j, i<=j);
    printf("\n%d >= %d é %d\n", i, j, i>=j);
    printf("\n%d < %d é %d\n", i, j, i<j);
    printf("\n%d > %d é %d\n", i, j, i>j);
    return(0);
}

Você pode notar que o resultado dos operadores relacionais é sempre igual a 0 (falso) ou 1 (verdadeiro).

Para fazer operações com valores lógicos (verdadeiro e falso) temos os operadores lógicos:

 

Operador 
&& 
|| 
Ação  
AND (E) 
OR (OU) 
NOT (NÃO) 

Usando os operadores relacionais e lógicos podemos realizar uma grande gama de testes. A tabela-verdade destes operadores é dada a seguir:

 

 
falso 
falso 
verdadeiro 
verdadeiro 
 
falso 
verdadeiro 
falso 
verdadeiro 
p AND q  
falso 
falso 
falso 
verdadeiro 
p OR q  
falso 
verdadeiro 
verdadeiro 
verdadeiro 

O programa a seguir ilustra o funcionamento dos operadores lógicos. Compile-o e faça testes com vários valores para i e j:

#include <stdio.h> 
int main()
{
    int i, j;
    printf("informe dois números(cada um sendo 0 ou 1): ");
    scanf("%d%d", &i, &j);
    printf("%d AND %d é %d\n", i, j, i && j);
    printf("%d OR %d é %d\n", i, j, i || j);
    printf("NOT %d é %d\n", i, !i);
}

Exemplo: No trecho de programa abaixo a operação j++ será executada, pois o resultado da expressão lógica é verdadeiro:

int i = 5, j =7;
if ( (i > 3) && ( j <= 7)  && ( i != j) )  j++;
        V    AND    V     AND   V  = V

Mais um exemplo. O programa abaixo, imprime na tela somente os números pares entre 1 e 100, apesar da variação de i ocorrer de 1 em 1:

/* Imprime os números pares entre 1 e 100. */
#include <stdio.h>
int main()
{
    int i;
    for(i=1; i<=100; i++)
        if(!(i%2)) printf("%d ",i);     /* o operador de resto dará falso (zero) */
}                                       /* quando usada c/ número par. Esse resultado*/
                                        /* é invertido pelo ! */

Operadores Lógicos Bit a Bit

O C permite que se faça operações lógicas "bit-a- bit" em números. Ou seja, neste caso, o número é representado por sua forma binária e as operações são feitas em cada bit dele. Imagine um número inteiro de 16 bits, a variável i, armazenando o valor 2. A representação binária de i, será: 0000000000000010 (quinze zeros e um único 1 na segunda posição da direita para a esquerda). Poderemos fazer operações em cada um dos bits deste número. Por exemplo, se fizermos a negação do número (operação binária NOT, ou operador binário ~ em C), isto é, ~i, o número se transformará em 1111111111111101. As operações binárias ajudam programadores que queiram trabalhar com o computador em "baixo nível". As operações lógicas bit a bit só podem ser usadas nos tipos char, int e long int. Os operadores são:
 

Operador Ação
& AND
| OR
^ XOR (OR exclusivo)
~ NOT
>> Deslocamento de bits a direita
<< Deslocamento de bits a esquerda

Os operadores &, |, ^ e ~ são as operações lógicas bit a bit. A forma geral dos operadores de deslocamento é:

valor>>número_de_deslocamentos

valor<<número_de_deslocamentos

O número_de_deslocamentos indica o quanto cada bit irá ser deslocado.  Por exemplo, para a variável i anterior, armazenando o número 2:

i << 3;

fará com que i agora tenha a representação binária:  0000000000010000, isto é, o valor armazenado em i passa a ser igual a 16.


AUTO AVALIAÇÃO

Veja como você está:

Diga se as seguintes expressões serão verdadeiras ou falsas:

->      ((10>5)||(5>10))
->      (!(5==6)&&(5!=6)&&((2>1)||(5<=4)))

Página Anterior Índice da Aula Próxima Página


Curso de C da EE/UFMG - 1996 - 2000