D Programação - Operadores
Um operador é um símbolo que diz ao compilador para realizar manipulações matemáticas ou lógicas específicas. A linguagem D é rica em operadores integrados 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
Este capítulo explica os operadores aritméticos, relacionais, lógicos, bit a bit, atribuição e outros, um por um.
Operadores aritméticos
A tabela a seguir mostra todos os operadores aritméticos suportados pela linguagem D. Assumir variávelA contém 10 e variável B detém 20 então -
Operador | Descrição | Exemplo |
---|---|---|
+ | Ele adiciona dois operandos. | A + B dá 30 |
- | Ele subtrai o segundo operando do primeiro. | A - B dá -10 |
* | Ele multiplica ambos os operandos. | A * B dá 200 |
/ | Ele divide numerador por denumerador. | B / A dá 2 |
% | Ele retorna o resto de uma divisão inteira. | B% A dá 0 |
++ | O operador de incremento aumenta o valor inteiro em um. | A ++ dá 11 |
- | O operador de decrementos diminui o valor inteiro em um. | A-- dá 9 |
Operadores Relacionais
A tabela a seguir mostra todos os operadores relacionais suportados pela linguagem D. Assumir variávelA contém 10 e variável B contém 20, então -
Operador | Descrição | Exemplo |
---|---|---|
== | Verifica se os valores dos dois operandos são iguais ou não, se sim a condição torna-se verdadeira. | (A == B) não é verdade. |
! = | Verifica se os valores de dois operandos são iguais ou não; se os valores não são iguais, a condição se torna verdadeira. | (A! = B) é verdade. |
> | 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 é verdade. |
< | Verifica se o valor do operando esquerdo é menor que o valor do operando direito; se sim, a condição torna-se verdadeira. | (A <B) é verdade. |
> = | 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 é verdade. |
<= | 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 D. Assumir variávelA detém 1 e variável B segura 0, então -
Operador | Descrição | Exemplo |
---|---|---|
&& | É chamado de operador lógico AND. Se ambos os operandos forem diferentes de zero, a condição torna-se verdadeira. | (A && B) é falso. |
|| | É denominado Operador OR lógico. Se qualquer um dos dois operandos for diferente de zero, a condição se torna verdadeira. | (A || B) é verdade. |
! | É denominado Operador NOT lógico. Use para reverter o estado lógico de seu operando. Se uma condição for verdadeira, o operador lógico NOT tornará falso. | ! (A && B) é verdade. |
Operadores bit a bit
Operadores bit a bit funcionam em bits e realizam operações 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 |
Suponha que A = 60; e B = 13. No formato binário 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
Os operadores bit a bit suportados pela linguagem D estão listados na tabela a seguir. Suponha que a variável A tenha 60 e a variável B tenha 13, então -
Operador | Descrição | Exemplo |
---|---|---|
E | O operador Binário AND copia um bit para o resultado se ele existir em ambos os operandos. | (A e B) dará 12, significa 0000 1100. |
| | O operador binário OR copia um bit se ele existir em qualquer operando. | (A | B) dá 61. Significa 0011 1101. |
^ | O operador binário XOR copia o bit se estiver definido em um operando, mas não em ambos. | (A ^ B) dá 49. Significa 0011 0001 |
~ | O operador de complemento binários é unário e tem o efeito de 'inverter' bits. | (~ A) dá -61. Significa 1100 0011 na forma de complemento de 2. |
<< | Operador binário de deslocamento à esquerda. O valor dos operandos à esquerda é movido para a esquerda pelo número de bits especificado pelo operando à direita. | A << 2 dá 240. Significa 1111 0000 |
>> | Operador binário de deslocamento à direita. O valor dos operandos à esquerda é movido para a direita pelo número de bits especificado pelo operando à direita. | A >> 2 dá 15. Significa 0000 1111. |
Operadores de atribuição
Os seguintes operadores de atribuição são suportados pela linguagem D -
Operador | Descrição | Exemplo |
---|---|---|
= | É um operador de atribuição simples. Ele atribui valores de operandos do lado direito para operando do lado esquerdo | C = A + B atribui valor de A + B em C |
+ = | É adicionar E operador de atribuição. Ele adiciona o operando direito ao operando esquerdo e atribui o resultado ao operando esquerdo | C + = A é equivalente a C = C + A |
- = | É o operador de atribuição subtrair AND. Ele subtrai o operando direito do operando esquerdo e atribui o resultado ao operando esquerdo. | C - = A é equivalente a C = C - A |
* = | É o operador de atribuição de multiplicação AND. Ele multiplica o operando direito pelo operando esquerdo e atribui o resultado ao operando esquerdo. | C * = A é equivalente a C = C * A |
/ = | É o operador de divisão AND atribuição. Ele divide o operando esquerdo com o operando direito e atribui o resultado ao operando esquerdo. | C / = A é equivalente a C = C / A |
% = | É o módulo E o operador de atribuição. Leva o módulo usando dois operandos e atribui o resultado ao operando esquerdo. | C% = A é equivalente a C = C% A |
<< = | É deslocamento para a esquerda e operador de atribuição. | C << = 2 é igual a C = C << 2 |
>> = | É o operador de deslocamento e atribuição à direita. | C >> = 2 é igual a C = C >> 2 |
& = | É um operador de atribuição AND bit a bit. | C & = 2 é igual a C = C & 2 |
^ = | É um operador de atribuição e OR exclusivo bit a bit. | C ^ = 2 é igual a C = C ^ 2 |
| = | É um operador de atribuição e OR inclusivo bit a bit | C | = 2 é igual a C = C | 2 |
Operadores diversos - tamanho e ternário
Existem alguns outros operadores importantes, incluindo sizeof e ? : suportado por D Language.
Operador | Descrição | Exemplo |
---|---|---|
tamanho de() | Retorna o tamanho de uma variável. | sizeof (a), onde a é inteiro, retorna 4. |
E | Retorna o endereço de uma variável. | &uma; fornece o endereço real da variável. |
* | Ponteiro para uma variável. | *uma; dá um ponteiro para uma variável. |
? : | Expressão Condicional | Se a condição for verdadeira, então valor X: Caso contrário, valor Y. |
Precedência de operadores em D
A precedência do operador determina o agrupamento de termos em uma expressão. Isso afeta como uma expressão é avaliada. Certos operadores têm precedência sobre outros.
Por exemplo, o operador de multiplicação tem precedência mais alta do que o operador de adição.
Vamos considerar uma expressão
x = 7 + 3 * 2.
Aqui, x é atribuído a 13, não a 20. A razão simples é que o operador * tem precedência mais alta do que +, portanto, 3 * 2 é calculado primeiro e, em seguida, o resultado é adicionado a 7.
Aqui, os operadores com a precedência mais alta aparecem na parte superior da tabela, aqueles com a mais baixa aparecem na parte inferior. Em uma expressão, os operadores de precedência mais alta são avaliados primeiro.
Categoria | Operador | Associatividade |
---|---|---|
Postfix | () [] ->. ++ - - | Da esquerda para direita |
Unário | + -! ~ ++ - - (tipo) * & sizeof | Direita para esquerda |
Multiplicativo | * /% | Da esquerda para direita |
Aditivo | + - | Da esquerda para direita |
Mudança | << >> | Da esquerda para direita |
Relacional | <<=>> = | Da esquerda para direita |
Igualdade | ==! = | Da esquerda para direita |
E bit a bit | E | Da esquerda para direita |
XOR bit a bit | ^ | Da esquerda para direita |
OR bit a bit | | | Da esquerda para direita |
E lógico | && | Da esquerda para direita |
OR lógico | || | Da esquerda para direita |
Condicional | ?: | Direita para esquerda |
Tarefa | = + = - = * = / =% = >> = << = & = ^ = | = | Direita para esquerda |
Vírgula | , | Da esquerda para direita |