CURSO DE C
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:
p falso falso verdadeiro verdadeiro |
q 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 ! */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)))
Curso de C da EE/UFMG - 1996 - 2000