Guia Abrangente de Operadores em C: Tipos, Funções e Exemplos
Um operador é um símbolo que diz ao compilador para realizar funções matemáticas ou lógicas específicas. A linguagem C é rica em operadores embutidos e fornece os seguintes tipos de operadores:
- Operadores Aritméticos
- Operadores Relacionais
- Operadores Lógicos
- Operadores Bitwise
- Operadores de Atribuição
- Operadores Diversos
Neste capítulo, veremos como cada operador funciona.
Operadores Aritméticos
A tabela a seguir mostra todos os operadores aritméticos suportados pela linguagem C. Assuma que a variável A contém 10 e a variável B contém 20, então:
Mostrar Exemplos
| Operador | Descrição | Exemplo |
|---|---|---|
| + | Adiciona dois operandos. | A + B = 30 |
| - | Subtrai o segundo operando do primeiro. | A - B = -10 |
| * | Multiplica ambos os operandos. | A * B = 200 |
| / | Divide o numerador pelo denominador. | B / A = 2 |
| % | Operador Módulo e resto após uma divisão inteira. | B % A = 0 |
| ++ | Operador de incremento aumenta o valor inteiro em um. | A++ = 11 |
| -- | Operador de decremento diminui o valor inteiro em um. | A-- = 9 |
Operadores Relacionais
A tabela a seguir mostra todos os operadores relacionais suportados por C. Assuma que a variável A contém 10 e a variável B contém 20, então:
Mostrar Exemplos
| Operador | Descrição | Exemplo |
|---|---|---|
| == | Verifica se os valores de dois operandos são iguais ou não. Se sim, a condição torna-se verdadeira. | (A == B) não é verdadeiro. |
| != | Verifica se os valores de dois operandos são iguais ou não. Se os valores não são iguais, a condição torna-se verdadeira. | (A != B) é verdadeiro. |
| > | Verifica se o valor do operando esquerdo é maior que o valor do operando direito. Se sim, a condição torna-se verdadeira. | (A > B) não é verdadeiro. |
| < | Verifica se o valor do operando esquerdo é menor que o valor do operando direito. Se sim, a condição torna-se verdadeira. | (A < B) é verdadeiro. |
| >= | Verifica se o valor do operando esquerdo é maior ou igual ao valor do operando direito. Se sim, a condição torna-se verdadeira. | (A >= B) não é verdadeiro. |
| <= | Verifica se o valor do operando esquerdo é menor ou igual ao valor do operando direito. Se sim, a condição torna-se verdadeira. | (A <= B) é verdadeiro. |
Operadores Lógicos
A tabela a seguir mostra todos os operadores lógicos suportados pela linguagem C. Assuma que a variável A contém 1 e a variável B contém 0, então:
Mostrar Exemplos
| Operador | Descrição | Exemplo |
|---|---|---|
| && | Chamado de operador AND Lógico. Se ambos os operandos são não-zero, a condição torna-se verdadeira. | (A && B) é falso. |
| || | Chamado de operador OR Lógico. Se qualquer um dos dois operandos é não-zero, a condição torna-se verdadeira. | (A || B) é verdadeiro. |
| ! | Chamado de operador NOT Lógico. Usado para inverter o estado lógico de seu operando. Se uma condição é verdadeira, o operador NOT Lógico a tornará falsa. | !(A && B) é verdadeiro. |
Operadores Bitwise
Operador bitwise trabalha em bits e realiza operação bit a bit. As tabelas de verdade para &, | e ^ são as seguintes:
| p | q | p & q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
Assuma A = 60 e B = 13 em formato binário, eles serão como segue:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
A tabela a seguir lista os operadores bitwise suportados por C. Assuma que a variável 'A' contém 60 e a variável 'B' contém 13, então:
Mostrar Exemplos
| Operador | Descrição | Exemplo |
|---|---|---|
| & | Operador AND Binário copia um bit para o resultado se ele existe em ambos os operandos. | (A & B) = 12, i.e., 0000 1100 |
| | | Operador OR Binário copia um bit se ele existe em qualquer operando. | (A | B) = 61, i.e., 0011 1101 |
| ^ | Operador XOR Binário copia o bit se ele está definido em um operando mas não em ambos. | (A ^ B) = 49, i.e., 0011 0001 |
| ~ | Operador Complemento de Um Binário é unário e tem o efeito de 'inverter' bits. | (~A ) = ~(60), i.e., -0111101 |
| << | Operador Deslocamento à Esquerda Binário. O valor do operando esquerdo é movido à esquerda pelo número de bits especificado pelo operando direito. | A << 2 = 240 i.e., 1111 0000 |
| >> | Operador Deslocamento à Direita Binário. O valor do operando esquerdo é movido à direita pelo número de bits especificado pelo operando direito. | A >> 2 = 15 i.e., 0000 1111 |
Operadores de Atribuição
A tabela a seguir lista os operadores de atribuição suportados pela linguagem C:
Mostrar Exemplos
| Operador | Descrição | Exemplo |
|---|---|---|
| = | Operador de atribuição simples. Atribui valores dos operandos do lado direito ao operando do lado esquerdo. | C = A + B atribuirá o valor de A + B a C |
| += | Operador de adição E atribuição. Adiciona o operando direito ao operando esquerdo e atribui o resultado ao operando esquerdo. | C += A é equivalente a C = C + A |
| -= | Operador de subtração E atribuição. Subtrai o operando direito do operando esquerdo e atribui o resultado ao operando esquerdo. | C -= A é equivalente a C = C - A |
| *= | Operador de multiplicação E atribuição. Multiplica o operando direito com o operando esquerdo e atribui o resultado ao operando esquerdo. | C *= A é equivalente a C = C * A |
| /= | Operador de divisão E atribuição. Divide o operando esquerdo pelo operando direito e atribui o resultado ao operando esquerdo. | C /= A é equivalente a C = C / A |
| %= | Operador de módulo E atribuição. Obtém o módulo usando dois operandos e atribui o resultado ao operando esquerdo. | C %= A é equivalente a C = C % A |
| <<= | Operador de deslocamento à esquerda E atribuição. | C <<= 2 é o mesmo que C = C << 2 |
| >>= | Operador de deslocamento à direita E atribuição. | C >>= 2 é o mesmo que C = C >> 2 |
| &= | Operador de atribuição AND bitwise. | C &= 2 é o mesmo que C = C & 2 |
| ^= | Operador de atribuição OR exclusivo bitwise. | C ^= 2 é o mesmo que C = C ^ 2 |
| |= | Operador de atribuição OR inclusivo bitwise. | C |= 2 é o mesmo que C = C | 2 |
Operadores Diversos - sizeof & ternário
Além dos operadores discutidos acima, existem alguns outros operadores importantes incluindo sizeof e ? : suportados pela linguagem C.
Mostrar Exemplos
| Operador | Descrição | Exemplo |
|---|---|---|
| sizeof() | Retorna o tamanho de uma variável. | sizeof(a), onde a é inteiro, retornará 4. |
| & | Retorna o endereço de uma variável. | &a; retorna o endereço real da variável. |
| * | Ponteiro para uma variável. | *a; |
| ? : | Expressão Condicional. | Se Condição é verdadeira ? então valor X : caso contrário valor Y |
Precedência de Operadores em C
A precedência de operadores determina o agrupamento de termos em uma expressão e decide como uma expressão é avaliada. Certos operadores têm precedência maior que outros; por exemplo, o operador de multiplicação tem precedência maior que o operador de adição.
Por exemplo, x = 7 + 3 * 2; aqui, x recebe 13, não 20 porque o operador * tem precedência maior que +, então ele primeiro é multiplicado com 3*2 e depois adiciona a 7.
Aqui, operadores com a maior precedência aparecem no topo da tabela, aqueles com a menor aparecem na parte inferior. Dentro de uma expressão, operadores de maior precedência serão avaliados primeiro.
Mostrar Exemplos
| Categoria | Operador | Associatividade |
|---|---|---|
| Pós-fixado | () [] -> . ++ - - | Da esquerda para a direita |
| Unário | + - ! ~ ++ - - (type)* & sizeof | Da direita para a esquerda |
| Multiplicativo | * / % | Da esquerda para a direita |
| Aditivo | + - | Da esquerda para a direita |
| Deslocamento | << >> | Da esquerda para a direita |
| Relacional | < <= > >= | Da esquerda para a direita |
| Igualdade | == != | Da esquerda para a direita |
| AND Bitwise | & | Da esquerda para a direita |
| XOR Bitwise | ^ | Da esquerda para a direita |
| OR Bitwise | | | Da esquerda para a direita |
| AND Lógico | && | Da esquerda para a direita |
| OR Lógico | || | Da esquerda para a direita |
| Condicional | ?: | Da direita para a esquerda |
| Atribuição | = += -= *= /= %=>>= <<= &= ^= |= | Da direita para a esquerda |
| Vírgula | , | Da esquerda para a direita |
Linguagem C
- Operadores em C# – Guia Completo dos Operadores em C#
- Dominando Operadores Bitwise e Bit Shift em C#: Guia Abrangente
- Dominando Operadores em C++: Guia Completo com Exemplos Práticos
- Dominando Operadores em Programação C: Um Guia Abrangente
- Dominando Operadores em Python: Guia Completo
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Dominando Operadores Bitwise em C: AND, OR, XOR, Shifts e Complemento
- Operadores Verilog: Aritméticos, Relacionais, Lógicos e Bitwise Essenciais para Síntese
- Java Essencial: Guia Completo dos Operadores Principais
- Guia Completo de Operadores em C++: Tipos, Uso e Boas Práticas