Compartilhar via


Operadores em C#

O C# fornece um grande conjunto de operadores, que são símbolos que especificam quais operações serão executadas em uma expressão. Operações em tipos integrais como ==, !=, <, >, <=, >=, binary +, binary -, ^, &, |, ~, ++, --, e sizeof() geralmente são permitidos em enumerações. Além disso, muitos operadores podem ser sobrecarregados pelo usuário, alterando seu significado quando aplicado a um tipo definido pelo usuário.

A tabela a seguir lista os operadores C# agrupados por ordem de precedência. Os operadores dentro de cada grupo têm prioridade igual.

Categoria de operador

Operadores

Primária

x.y

f(x)

a[x]

x++

x--

novo

typeof

verificado

não verificada

padrão(T)

delegado

sizeof

->

Unário

+x

-x

!x

~x

++x

--x

(T)x

await

&x

*x

Multiplicativo

x * y

x / y

x % y

Aditivo

x + y

x - y

Shift

x << y

x >> y

Teste relacional e de tipo

x < y

x > y

x <= y

x >= y

é

como

Igualdade

x == y

x != y

E lógico

x & y

XOR lógico

x ^ y

OU lógico

x | y

Conditional AND

x && y

Condicional OR

x || y

Coalescência nula

x ?? y

Condicional

?:

Atribuição e expressão lambda

x = y

x += y

x -= y

x *= y

x /= y

x %= y

x &= y

x |= y

x ^= y

x <<= y

x >>= y

=>

Estouro aritmético

Os operadores aritméticos (+, -, *, /) podem gerar os resultados que estão fora do intervalo de valores possíveis para o tipo numérico envolvido. Você deve se referir à seção em um operador específico para detalhes, mas geralmente:

  • O estouro aritmético lança uma OverflowException ou descarta os bits mais significativos do resultado. A divisão de inteiro por zero sempre lança uma DivideByZeroException.

  • O estouro aritmético de ponto flutuante ou a divisão por zero nunca lança uma exceção, uma vez que os tipos de ponto flutuante se baseiam no IEEE 754 e, portanto, têm previsão para representar o infinito e NaN (Não um número).

  • O estouro aritmético Decimal sempre lança um OverflowException. A divisão decimal por zero sempre lança uma DivideByZeroException.

Quando o estouro do inteiro ocorre, o que acontece depende do contexto de execução, que pode ser marcado ou desmarcado. Em um contexto verificado, OverflowException é lançada. Em um contexto não verificado, os bits mais significativos do resultado são descartados e a execução continua. Assim, C# oferece a você a opção de estouro de tratamento ou ignorar.

Além dos operadores aritméticos, as conversões de tipo integral para tipo integral podem causar estouro, por exemplo, a conversão de um long em um int, e estão sujeitas à execução verificada ou não verificada. No entanto, os operadores bit-a-bit e os operadores shift nunca causam estouro.

Consulte também

Referência

Operadores sobrecarregáveis (Guia de Programação em C#)

Palavras-chave C#

Conceitos

Guia de Programação em C#

Outros recursos

Referência de C#

Visual C#