Operadores em C e C++
Origem: Wikipédia, a enciclopédia livre.
Esta é uma lista de operadores nas linguagens C e C++. Todos os operadores presentes existem em C++; uma terceira coluna indica se um operador também está presente em C.
C++ também contém os operadores para conversão de tipos de dados const_cast
, static_cast
, dynamic_cast
e reinterpret_cast
, que não estão listados na tabela.
Índice |
[editar] Precedência de operadores
A seguir é listada a ordem de precedência e associatividade dos operadores. Elementos na mesma linha são calculados com a mesma precedência, de acordo com a direção dada.
A sintaxe das expressões é especificada por uma gramática livre de contexto, a tabela a seguir é inferida pela gramática.
Operadores | Descrição | Associatividade |
---|---|---|
:: |
Resolução de escopo | esquerda para direita |
++ --
|
Incremento e decremento pósfixo Parênteses (agrupamento) |
esquerda para direita |
++ --
|
Incremento e decremento prefixo Adição e subtração unária |
direita para esquerda |
.* ->* |
Ponteiro para membro | esquerda para direita |
* / % |
Multiplicação, divisão, e módulo (resto) | |
+ - |
Adição e subtração | |
<< >> |
Deslocamento de bits à esquerda e à direita | |
< <=
|
“menor que” e “menor ou igual que” “maior que” e “maior ou igual que” |
|
== != |
“Igual à” e “diferente de ” | |
& |
E para bits | |
^ |
Ou exclusivo para bits | |
| |
Ou para bits | |
&& |
E lógico | |
|| |
Ou lógico | |
c?t:f |
Condição ternária | direita para esquerda |
=
|
Atribuição Atribuição por adição ou subtração |
|
throw |
Lançamento de exceção | --- |
, |
Vírgula | esquerda para direita |
[editar] Tabela
[editar] Operadores aritméticos |
|||
Operador | Sintaxe | É sobrecarregável? | Presente em C? |
---|---|---|---|
Adição unária | +a | ||
Adição | a + b | ||
Incremento pré-fixado | ++a | ||
Incremento pós-fixado | a++ | ||
Atribuição por adição | a += b | ||
Subtração unária | -a | ||
Subtração | a - b | ||
Decremento pré-fixado | --a | ||
Decremento pós-fixado | a-- | ||
Atribuição por subtração | a -= b | ||
Multiplicação | a * b | ||
Atribuição por multiplicação | a *= b | ||
Divisão | a / b | ||
Atribuição por divisão | a /= b | ||
Módulo (resto) | a % b | ||
Atribuição por módulo (resto) | a %= b | ||
[editar] Operadores comparativos |
|||
Operador | Sintaxe | É sobrecarregável? | Presente em C? |
Menor que | a < b | ||
Menor ou igual que | a <= b | ||
Maior que | a > b | ||
Maior ou igual que | a >= b | ||
Diferente de | a != b | ||
Igual a | a == b | ||
Não lógico | !a | ||
E lógico | a && b | ||
Ou lógico | a || b | ||
[editar] Operadores de deslocamento de bits |
|||
Operador | Sintaxe | É sobrecarregável? | Presente em C? |
Deslocamento à esquerda | a << b | ||
Atribução de deslocamento à esquerda | a <<= b | ||
Deslocamento à direita | a >> b | ||
Atribuição de deslocamento à direita | a >>= b | ||
[editar] Operadores lógicos sobre bits |
|||
Operador | Sintaxe | É sobrecarregável? | Presente em C? |
Complemento | ~a | ||
E | a & b | ||
Atribuição por e | a &= b | ||
Ou | a | b | ||
Atribuição por ou | a |= b | ||
Ou exclusivo | a ^ b | ||
Atribuição por ou exclusivo | a ^= b | ||
[editar] Outros operadores |
|||
Operador | Sintaxe | É sobrecarregável? | Presente em C? |
Atribuição | a = b | ||
Chamada de função | a() | ||
Elemento de arranjo | a[] | ||
Derreferência | *a | ||
Referência | &a | ||
Membro de ponteiro | a->b | ||
Membro de identificador | a.b | ||
De-referência de membro de identificador | a.*b | ||
De-referência de membro de ponteiro | a->*b | ||
Conversão de tipo de dados | (tipo) a | ||
Vírgula | a , b | ||
Condição ternária | a ? b : c | ||
Resolução de escopo | a :: b | ||
Tamanho de | sizeof a | ||
Identificador de tipo | typeid (type) |
[editar] Sinônimos em C++
C++ define palavras-chave que atuam como apelidos para alguns operadores: and
(&&
), bitand
(&
), and_eq
(&=
), or
(||
), bitor
(|
), or_eq
(|=
), xor
(^
), xor_eq
(^=
), not
(!
), not_eq
(!=
), compl
(~
). Eles são processados pelo analisador sintático da mesma forma que seus equivalentes.
Já C fornece na biblioteca padrão o cabeçalho iso646.h
, que define esses símbolos através de macros.