English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
operadores em C# são alguns símbolos especiais que executam certas operações em operandos. Em matemática, o símbolo de adição (+) representa a soma de dois números.+são a soma dos números a esquerda e a direita. Da mesma forma, o C# inclui operadores de diferentes tipos de operações.
Operador é um símbolo que informa ao compilador para executar uma operação matemática ou lógica específica. O C# tem uma rica coleção de operadores, classificados da seguinte forma:
Operadores aritméticos
operadores relacionais
operadores lógicos
Operadores de bit
Operador de atribuição
Outros operadores
Este tutorial explicará um a um os operadores aritméticos, operadores relacionais, operadores lógicos, operadores bit a bit, operadores de atribuição e outros operadores.
A tabela a seguir mostra todos os operadores aritméticos suportados pelo C#. Supondo a variável A o valor é 10, variável B o valor é 20, então:
Operadores | Descrição | Exemplo |
---|---|---|
+ | Adicionar os dois operandos | A + B receberá 30 |
- | Subtrair o segundo operando do primeiro | A - B receberá -10 |
* | Multiplicar os dois operandos | A * B receberá 200 |
/ | Divisão do numerador pelo denominador | B / A receberá 2 |
% | Operador de módulo, resto da divisão inteira | B % A resultará em 0 |
++ | Operador de incremento, valor inteiro aumentado 1 | A++ Obterá 11 |
-- | Operador de decremento, valor inteiro reduzido 1 | A-- Obterá 9 |
Veja o exemplo a seguir para entender todos os operadores aritméticos disponíveis em C#:
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a =; 21; int b =; 10; int c; c = a + b; Console.WriteLine("Linha 1 - O valor de c é {0}, c); c = a - b; Console.WriteLine("Linha 2 - O valor de c é {0}, c); c = a * b; Console.WriteLine("Linha 3 - O valor de c é {0}, c); c = a / b; Console.WriteLine("Linha 4 - O valor de c é {0}, c); c = a % b; Console.WriteLine("Linha 5 - O valor de c é {0}, c); // ++a é incrementada antes de ser atribuída c = ++a; Console.WriteLine("Linha 6 - O valor de c é {0}, c); // O valor de a neste momento é 22 // --a é decrementada antes de ser atribuída c = --a; Console.WriteLine("Linha 7 - O valor de c é {0}, c); Console.ReadLine(); } } }
Quando o código acima for compilado e executado, ele produzirá o seguinte resultado:
Linha 1 - O valor de c é 31 Linha 2 - O valor de c é 11 Linha 3 - O valor de c é 210 Linha 4 - O valor de c é 2 Linha 5 - O valor de c é 1 Linha 6 - O valor de c é 22 Linha 7 - O valor de c é 21
c = a++: Primeiro atribuir a a c, então incrementar a.
c = ++a: Primeiro incrementar a, então atribuir a a c.
c = a--: Primeiro atribuir a a c, então decrementar a.
c = --a: Primeiro decrementar a, então atribuir a a c.
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a =; 1; int b; // a++ atribuição antes do incremento b = a++; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // ++a é incrementada antes de ser atribuída a = 1; // reinitializar a b = ++a; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // a-- atribuição antes do decremento a = 1; // reinitializar a b = a--; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // --a é decrementada antes de ser atribuída a = 1; // reinitializar a b = --a; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); } } }
Execute o programa acima e o resultado de saída será:
a = 2 b = 1 a = 2 b = 2 a = 0 b = 1 a = 0 b = 0
A tabela a seguir mostra todos os operadores relacionais suportados pelo C#. Suponha que a variável A o valor é 10, variável B o valor é 20, então:
Operadores | Descrição | Exemplo |
---|---|---|
== | verifica se os valores dos operandos são iguais, se forem, a condição é verdadeira. | (A == B) não é verdadeiro. |
!= | verifica se os valores dos operandos são iguais, se não forem, a condição é verdadeira. | (A != B) é verdadeiro. |
> | verifica se o valor do operando esquerdo é maior que o valor do operando direito, se for, a condição é verdadeira. | (A > B) não é verdadeiro. |
< | verifica se o valor do operando esquerdo é menor que o valor do operando direito, se for, a condição é verdadeira. | (A < B) é verdadeiro. |
>= | verifica se o valor do operando esquerdo é maior ou igual ao valor do operando direito, se for, a condição é verdadeira. | (A >= B) não é verdadeiro. |
<= | verifica se o valor do operando esquerdo é menor ou igual ao valor do operando direito, se for, a condição é verdadeira. | (A <= B) é verdadeiro. |
Veja o exemplo a seguir para entender todos os operadores relacionais disponíveis no C#:
using System; class Program { static void Main(string[] args) { int a =; 21; int b =; 10; if (a == b) { Console.WriteLine("Linha 1 - a é igual a b); } else { Console.WriteLine("Linha 1 - a não é igual a b); } if (a < b) { Console.WriteLine("Linha 2 - a é menor que b); } else { Console.WriteLine("Linha 2 - a não é menor ou igual que b); } if (a > b) { Console.WriteLine("Linha 3 - a é maior que b); } else { Console.WriteLine("Linha 3 - a não é maior ou igual que b); } /* modificar os valores de a e b */ a = 5; b = 20; if (a <= b) { Console.WriteLine("Linha 4 - a é menor ou igual a b); } if (b >= a) { Console.WriteLine("Linha 5 - b é maior ou igual a a); } } }
Quando o código acima for compilado e executado, ele produzirá o seguinte resultado:
Linha 1 - a não é igual a b Linha 2 - a não é menor ou igual que b Linha 3 - a é maior que b Linha 4 - a é menor ou igual a b Linha 5 - b é maior ou igual a a
A tabela a seguir mostra todos os operadores lógicos suportados pelo C#. Suponha que a variável A para o valor booleano true, a variável B para o valor booleano false, então:
Operadores | Descrição | Exemplo |
---|---|---|
&& | chamado de operador lógico e. Se ambos os operandos forem não nulos, a condição é verdadeira. | (A && B) é falso. |
|| | chamado de operador lógico ou. Se qualquer um dos operandos for não nulo, a condição é verdadeira. | (A || B) é verdadeiro. |
! | chamado de operador lógico não. Usado para inverter o estado lógico do operando. Se a condição for verdadeira, o operador lógico não a tornará falsa. | !(A && B) é verdadeiro. |
Veja o exemplo a seguir para entender todos os operadores lógicos disponíveis no C#:
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { bool a = true; bool b = true; if (a && b) { Console.WriteLine("Linha 1 - Condição verdadeira); } if (a || b) { Console.WriteLine("Linha 2 - Condição verdadeira); } /* modificar os valores de a e b */ a = false; b = true; if (a && b) { Console.WriteLine("Linha 3 - Condição verdadeira); } else { Console.WriteLine("Linha 3 - a condição não é verdadeira); } if (!(a && b)) { Console.WriteLine("Linha 4 - Condição verdadeira); } Console.ReadLine(); } } }
Quando o código acima for compilado e executado, ele produzirá o seguinte resultado:
Linha 1 - Condição verdadeira Linha 2 - Condição verdadeira Linha 3 - Condição falsa Linha 4 - Condição verdadeira
Os operadores de bit agem sobre os bits e executam operações bit a bit. As tabelas de verdade de &、 | 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 = 13Agora, representados em formato binário, eles sã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 de bit suportados pelo C#. Suponha que a variável A o valor é 60, variável B o valor é 13então:
Operadores | Descrição | Exemplo |
---|---|---|
& | Se existir em ambos os operandos, o operador AND binário copia um bit para o resultado. | (A & B) obterá 12,ou seja, 0000 1100 |
| | Se existir em qualquer um dos operandos, o operador OR binário copia um bit para o resultado. | (A | B) obterá 61ou seja, 0011 1101 |
^ | Se existir em um dos operandos mas não em ambos, o operador de XOR binário copia um bit para o resultado. | (A ^ B) obterá 49ou seja, 0011 0001 |
~ | O operador de negação bitwise é um operador unário, que tem o efeito de "inverter" os bits, ou seja, 0 torna-se1,1tornar-se 0, incluindo o bit de sinal. | (~A) obterá -61ou seja 1100 0011é a forma de complemento de dois de um número binário assinado. |
<< | Operador de deslocamento à esquerda binário. O valor do operando à esquerda é movido para a esquerda pela quantidade especificada pelo operando à direita. | A << 2 Obterá 240, ou seja 1111 0000 |
>> | Operador de deslocamento à direita binário. O valor do operando à esquerda é movido para a direita pela quantidade especificada pelo operando à direita. | A >> 2 Obterá 15,ou seja, 0000 1111 |
Veja o exemplo a seguir para entender todos os operadores de bit disponíveis no C#:
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a =; 60; /* 60 = 0011 1100 */ int b =; 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ Console.WriteLine("Linha 1 - O valor de c é {0}, c); c = a | b; /* 61 = 0011 1101 */ Console.WriteLine("Linha 2 - O valor de c é {0}, c); c = a ^ b; /* 49 = 0011 0001 */ Console.WriteLine("Linha 3 - O valor de c é {0}, c); c = ~a; /*-61 = 1100 0011 */ Console.WriteLine("Linha 4 - O valor de c é {0}, c); c = a << 2; /* 240 = 1111 0000 */ Console.WriteLine("Linha 5 - O valor de c é {0}, c); c = a >> 2; /* 15 = 0000 1111 */ Console.WriteLine("Linha 6 - O valor de c é {0}, c); Console.ReadLine(); } } }
Quando o código acima for compilado e executado, ele produzirá o seguinte resultado:
Linha 1 - O valor de c é 12 Linha 2 - O valor de c é 61 Linha 3 - O valor de c é 49 Linha 4 - O valor de c é -61 Linha 5 - O valor de c é 240 Linha 6 - O valor de c é 15
A tabela a seguir lista os operadores de atribuição suportados pelo C#:
Operadores | Descrição | Exemplo |
---|---|---|
= | O operador de atribuição simples atribui o valor do operando à direita ao operando à esquerda | C = A + B atribuirá A + O valor de B é atribuído a C |
+= | O operador de atribuição de adição atribui o resultado da adição do operando à direita pelo operando à esquerda ao operando à esquerda | C += A é equivalente a C = C + A |
-= | O operador de atribuição de subtração atribui o resultado da subtração do operando à esquerda pelo operando à direita ao operando à esquerda | C -= A é equivalente a C = C - A |
*= | O operador de atribuição de multiplicação atribui o resultado da multiplicação do operando à direita pelo operando à esquerda ao operando à esquerda | C *= A é equivalente a C = C * A |
/= | O operador de atribuição de divisão atribui o resultado da divisão do operando à esquerda pelo operando à direita ao operando à esquerda | C /= A é equivalente a C = C / A |
%= | Operador de módulo e atribuição, atribui o módulo dos dois operandos à esquerda | C %= A é equivalente a C = C % A |
<<= | Operador de deslocamento à esquerda e atribuição | C <<= 2 É equivalente a C = C << 2 |
>>= | Operador de deslocamento à direita e atribuição | C >>= 2 É equivalente a C = C >> 2 |
&= | Operador de e lógico e atribuição | C &= 2 É equivalente a C = C & 2 |
^= | Operador de xor lógico e atribuição | C ^= 2 É equivalente a C = C ^ 2 |
|= | Operador de ou lógico e atribuição | C |= 2 É equivalente a C = C | 2 |
Veja o exemplo a seguir para entender todos os operadores de atribuição disponíveis no C#:
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a =; 21; int c; c = a; Console.WriteLine("Linha 1 - = valor de c = {0} c += a; Console.WriteLine("Linha 2 - += valor de c = {0} c -= a; Console.WriteLine("Linha 3 - -= valor de c = {0} c *= a; Console.WriteLine("Linha 4 - *= valor de c = {0} c /= a; Console.WriteLine("Linha 5 - /= valor de c = {0} c = 2c = 00; Console.WriteLine("Linha 6 - c %= a; %= valor de c = {0} 2; Console.WriteLine("Linha 7 - c <<= <<= valor de c = {0} 2; Console.WriteLine("Linha 8 - c >>= >= valor de c = {0} 2; Console.WriteLine("Linha 9 - c &= &= valor de c = {0} 2; Console.WriteLine("Linha 10 - c ^= ^= valor de c = {0} 2; Console.WriteLine("Linha 11 - |= valor de c = {0} Console.ReadLine(); } } }
Quando o código acima for compilado e executado, ele produzirá o seguinte resultado:
Linha 1 - = valor de c = 21 Linha 2 - += valor de c = 42 Linha 3 - -= valor de c = 21 Linha 4 - *= valor de c = 441 Linha 5 - /= valor de c = 21 Linha 6 - %= valor de c = 11 Linha 7 - <<= valor de c = 44 Linha 8 - >= valor de c = 11 Linha 9 - &= valor de c = 2 Linha 10 - ^= valor de c = 0 Linha 11 - |= valor de c = 2
A tabela a seguir lista outros operadores importantes suportados pelo C#, incluindo sizeof、typeof e ? :.
Operadores | Descrição | Exemplo |
---|---|---|
sizeof() | Retornar o tamanho do tipo de dados. | sizeof(int), retornará 4. |
typeof() | Retornar o tipo da classe. | typeof(StreamReader); |
& | Retornar o endereço da variável. | &a; Obterá o endereço real da variável. |
* | Ponteiro de variável. | *a; Apontará para uma variável. |
? : | Expressão condicional | Se a condição for verdadeira? Então X : Caso contrário, Y |
é | Determinar se um objeto é do tipo específico. | Se(Ford é Car) // Verificar se o Ford é um objeto da classe Car. |
como | A conversão forçada não lança exceção, mesmo que a conversão falhar. | Object obj = new StringReader("Hello"); StringReader r = obj as StringReader; |
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { /* Exemplo do operador sizeof */ Console.WriteLine("O tamanho de int é {0}", sizeof(int)); Console.WriteLine("O tamanho de short é {0}", sizeof(short)); Console.WriteLine("O tamanho de double é {0}", sizeof(double)); /* Exemplo de operador ternário */ int a, b; a = 10; b = (a == 1) ? 20 : 30; Console.WriteLine("O valor de b é {0}", b); b = (a == 10) ? 20 : 30; Console.WriteLine("O valor de b é {0}", b); Console.ReadLine(); } } }
Quando o código acima for compilado e executado, ele produzirá o seguinte resultado:
O tamanho de int é 4 O tamanho de short é 2 O tamanho de double é 8 O valor de b é 30 O valor de b é 20
A prioridade dos operadores determina como os itens de uma expressão são combinados. Isso afeta como uma expressão é calculada. Alguns operadores têm uma prioridade maior do que outros, por exemplo, os operadores de multiplicação e divisão têm uma prioridade maior do que os operadores de adição e subtração.
Por exemplo, x = 7 + 3 * 2aqui, x é atribuído a 13, não 20, porque o operador * com + Prioridade, então primeiro calcula-se a multiplicação 3*2Então, mais 7.
A tabela a seguir lista os operadores por ordem de prioridade de operação, com os operadores de maior prioridade listados no topo da tabela e os operadores de menor prioridade listados no fundo. Em uma expressão, os operadores de maior prioridade são calculados primeiro.
Categorias | Operadores | Associatividade |
---|---|---|
Pós-fixo | () [] -> . ++ - - | Da esquerda para a direita |
Unário | + - ! ~ ++ - - (type)* & sizeof | Da direita para a esquerda |
Multiplicação e Divisão | * / % | Da esquerda para a direita |
Adição e Subtração | + - | Da esquerda para a direita |
Deslocamento | << >> | Da esquerda para a direita |
Relacional | < <= > >= | Da esquerda para a direita |
Igualdade | == != | Da esquerda para a direita |
Bitwise e AND | & | Da esquerda para a direita |
Bitwise xor XOR | ^ | Da esquerda para a direita |
Bitwise ou OR | | | Da esquerda para a direita |
Lógica e AND | && | Da esquerda para a direita |
Lógica ou OR | || | 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 |
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a =; 20; int b =; 10; int c =; 15; int d =; 5; int e; e = (a + b) * c / d; // ( 30 * 15 ) / 5 Console.WriteLine("(a + b) * c / O valor de d é {0}, e e = ((a + b) * c) / d; // (30 * 15 ) / 5 Console.WriteLine("((a + b) * c) / O valor de d é {0}, e e = (a + b) * (c / d); // (30) * (15/5) Console.WriteLine("(a + b) * (c / O valor de d) é {0}, e e = a + (b * c) / d; // 20 + (150/5) Console.WriteLine("a + (b * c) / O valor de d é {0}, e Console.ReadLine(); } } }
Quando o código acima for compilado e executado, ele produzirá o seguinte resultado:
(a + b) * c / O valor de d é 90 ((a + b) * c) / O valor de d é 90 (a + b) * (c / O valor de d) é 90 a + (b * c) / O valor de d é 50