C - Operadores
Um operador é um símbolo que diz ao compilador para executar 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 bit a bit
- 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. Suponha a variável A contém 10 e a variável B detém 20 então -
Mostrar exemplos
Operador | Descrição | Exemplo |
---|---|---|
+ | Adiciona dois operandos. | Um + B =30 |
− | Subtrai o segundo operando do primeiro. | A − B =-10 |
* | Multiplica ambos os operandos. | A * B =200 |
/ | Divide numerador por denumerador. | B / A =2 |
% | Operador de módulo e resto de após uma divisão inteira. | B % A =0 |
++ | O operador de incremento aumenta o valor inteiro em um. | A++ =11 |
-- | O 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 a variável A contém 10 e a variável B deté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 se torna verdadeira. | (A ==B) não é verdade. |
!= | Verifica se os valores de dois operandos são iguais ou não. Se os valores não forem iguais, a condição se tornará verdadeira. | (A !=B) é verdadeiro. |
> | Verifica se o valor do operando esquerdo é maior que o valor do operando direito. Se sim, a condição se torna verdadeira. | (A> B) não é verdade. |
< | Verifica se o valor do operando esquerdo é menor que o valor do operando direito. Se sim, a condição se torna verdadeira. | (A |
>= | Verifica se o valor do operando esquerdo é maior ou igual ao valor do operando direito. Se sim, a condição se torna verdadeira. | (A>=B) não é verdade. |
<= | Verifica se o valor do operando esquerdo é menor ou igual ao valor do operando direito. Se sim, a condição se torna verdadeira. | (A <=B) é verdadeiro. |
Operadores lógicos
A tabela a seguir mostra todos os operadores lógicos suportados pela linguagem C. Suponha a variável A contém 1 e variável B mantém 0, então -
Mostrar exemplos
Operador | Descrição | Exemplo |
---|---|---|
&& | Chamado operador AND lógico. Se ambos os operandos forem diferentes de zero, a condição se tornará verdadeira. | (A &&B) é falso. |
|| | Chamado Operador OR Lógico. Se qualquer um dos dois operandos for diferente de zero, a condição se tornará verdadeira. | (A || B) é verdadeiro. |
! | Chamado Operador NOT Lógico. Ele é usado para reverter o estado lógico de seu operando. Se uma condição for verdadeira, o operador lógico NOT a tornará falsa. | !(A &&B) é verdadeiro. |
Operadores bit a bit
O operador bit a bit funciona em bits e executa a operação bit a bit. As tabelas 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 |
Suponha que A =60 e B =13 em formato binário, eles serão os seguintes −
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 bit a bit suportados por C. Suponha que a variável 'A' contenha 60 e a variável 'B' contenha 13, então −
Mostrar exemplos
Operador | Descrição | Exemplo |
---|---|---|
& | O operador AND binário copia um bit para o resultado se existir em ambos os operandos. | (A e B) =12, ou seja, 0000 1100 |
| | O operador OR binário copia um bit se existir em qualquer um dos operandos. | (A | B) =61, ou seja, 0011 1101 |
^ | O operador XOR binário copia o bit se estiver definido em um operando, mas não em ambos. | (A ^ B) =49, ou seja, 0011 0001 |
~ | O Operador de Complemento de Binário Um é unário e tem o efeito de 'inverter' bits. | (~A ) =~(60), ou seja,. -0111101 |
<< | Operador de deslocamento à esquerda binário. O valor do operando esquerdo é movido para a esquerda pelo número de bits especificado pelo operando direito. | A <<2 =240 ou seja, 1111 0000 |
>> | Operador de deslocamento à direita binário. O valor do operando esquerdo é movido para a direita pelo número de bits especificado pelo operando direito. | A>> 2 =15, ou seja, 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 |
+= | Adicionar operador de atribuição AND. Ele adiciona o operando direito ao operando esquerdo e atribui o resultado ao operando esquerdo. | C +=A é equivalente a C =C + A |
-= | Subtrair AND operador de atribuição. Ele subtrai o operando direito do operando esquerdo e atribui o resultado ao operando esquerdo. | C -=A é equivalente a C =C - A |
*= | Operador de atribuição de multiplicar AND. Ele multiplica o operando direito pelo operando esquerdo e atribui o resultado ao operando esquerdo. | C *=A é equivalente a C =C * A |
/= | Operador de atribuição de divisão AND. Ele divide o operando esquerdo pelo operando direito e atribui o resultado ao operando esquerdo. | C /=A é equivalente a C =C / A |
%= | Modulus AND operador de atribuição. Leva módulo usando dois operandos e atribui o resultado ao operando esquerdo. | C %=A é equivalente a C =C % A |
<<= | Deslocamento à esquerda E operador de atribuição. | C <<=2 é igual a C =C <<2 |
>>= | Deslocamento à direita E operador de atribuição. | C>>=2 é igual a C =C>> 2 |
&= | Operador de atribuição AND bit a bit. | C &=2 é igual a C =C &2 |
^= | OR exclusivo bit a bit e operador de atribuição. | C ^=2 é igual a C =C ^ 2 |
|= | OR inclusivo bit a bit e operador de atribuição. | C |=2 é igual a C =C | 2 |
Operadores diversos ↦ sizeof &ternário
Além dos operadores discutidos acima, existem alguns outros operadores importantes, incluindo sizeof e ? : suportado pela linguagem C.
Mostrar exemplos
Operador | Descrição | Exemplo |
---|---|---|
sizeof() | Retorna o tamanho de uma variável. | sizeof(a), onde a é um número 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 a condição for verdadeira? então valor X :caso contrário valor Y |
Precedência de Operadores em C
A precedência do operador determina o agrupamento de termos em uma expressão e decide como uma expressão é avaliada. Certos operadores têm precedência mais alta do que outros; por exemplo, o operador de multiplicação tem uma precedência mais alta do que o operador de adição.
Por exemplo, x =7 + 3 * 2; aqui, x recebe 13, não 20 porque o operador * tem uma precedência maior que +, então ele primeiro é multiplicado por 3*2 e depois soma 7.
Aqui, os operadores com maior precedência aparecem na parte superior da tabela, aqueles com menor prioridade aparecem na parte inferior. Dentro de uma expressão, os operadores de maior precedência serão avaliados primeiro.
Mostrar exemplos
Categoria | Operador | Associatividade |
---|---|---|
Postfix | () [] -> . ++ - - | Esquerda para direita |
Unário | + -! ~ ++ - - (tipo)* &sizeof | Da direita para a esquerda |
Multiplicativo | * / % | Esquerda para direita |
Aditivo | + - | Esquerda para direita |
Mudar | <<>> | Esquerda para direita |
Relacional | <<=>>= | Esquerda para direita |
Igualdade | ==!= | Esquerda para direita |
Bit a bit E | & | Esquerda para direita |
XOR bit a bit | ^ | Esquerda para direita |
OU bit a bit | | | Esquerda para direita |
E lógico | && | Esquerda para direita |
OU lógico | || | Esquerda para direita |
Condicional | ?: | Da direita para a esquerda |
Tarefa | =+=-=*=/=%=>>=<<=&=^=|= | Da direita para a esquerda |
Vírgula | , | Esquerda para direita |
Linguagem C