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 |
|
Unário |
|
Multiplicativo |
|
Aditivo |
|
Shift |
|
Teste relacional e de tipo |
|
Igualdade |
|
E lógico |
|
XOR lógico |
|
OU lógico |
|
Conditional AND |
|
Condicional OR |
|
Coalescência nula |
|
Condicional |
|
Atribuição e expressão lambda |
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#)