Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
| c:operadores [2023/08/03 13:28] – maziero | c:operadores [2024/09/05 14:35] (atual) – [Ordem de precedência] maziero | ||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| + | ====== Operadores em C ====== | ||
| + | |||
| + | Um operador é um símbolo que indica a realização de uma operação sobre uma ou mais variáveis ou valores. Há uma grande diversidade de operadores em C, sendo os principais apresentados nesta seção. | ||
| + | |||
| + | ===== Operadores aritméticos ===== | ||
| + | |||
| + | Os principais operadores aritméticos são descritos abaixo, considerando '' | ||
| + | |||
| + | ^ Operador ^ Descrição ^ Exemplo ^ Resultado ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | ''/'' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | ===== Operadores relacionais ===== | ||
| + | |||
| + | ^ Operador ^ Descrição ^ Exemplo ^ Resultado ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | ''>'' | ||
| + | | ''<'' | ||
| + | | ''> | ||
| + | | ''< | ||
| + | |||
| + | ===== Operadores lógicos ===== | ||
| + | |||
| + | ^ Operador ^ Descrição ^ Exemplo ^ | ||
| + | | ''&&'' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | ===== Operadores de atribuição ===== | ||
| + | |||
| + | ^ Operador ^ Descrição ^ Exemplo ^ Equivale a ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | ''/ | ||
| + | | '' | ||
| + | |||
| + | <note important> | ||
| + | Muito cuidado para não confundir a atribuição ( '' | ||
| + | </ | ||
| + | |||
| + | ===== Operadores binários ===== | ||
| + | |||
| + | Considerando duas variáveis inteiras de 8 bits sem sinal: | ||
| + | |||
| + | * A = 0001 0001 (17) | ||
| + | * B = 0110 0011 (99) | ||
| + | |||
| + | ^ Operador ^ Descrição ^ Exemplo ^ Resultado ^ | ||
| + | | ''&'' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | ''<<'' | ||
| + | | ''>>'' | ||
| + | | ''& | ||
| + | | '' | ||
| + | | '' | ||
| + | | ''<< | ||
| + | | ''>> | ||
| + | |||
| + | ===== Operadores diversos ===== | ||
| + | |||
| + | ^ Operador ^ Descrição ^ Exemplo ^ | ||
| + | | '' | ||
| + | | ''&'' | ||
| + | | '' | ||
| + | | ''? | ||
| + | |||
| + | ===== Ordem de precedência ===== | ||
| + | |||
| + | A ordem de precedência dos operadores vistos acima define a sequência em que os operadores serão aplicados. A ordem de precedência pode ter forte influência sobre o resultado da avaliação de expressões complexas. | ||
| + | |||
| + | A tabela a seguir indica a ordem de precedência dos principais operadores em C, da maior para a menor: | ||
| + | |||
| + | ^ Ordem ^ Operadores ^ Descrição ^ | ||
| + | | 1 | '' | ||
| + | | 2 | '' | ||
| + | | 3 | '' | ||
| + | | 4 | '' | ||
| + | | 5 | ''<< | ||
| + | | 6 | ''< | ||
| + | | 7 | '' | ||
| + | | 8 | ''&'' | ||
| + | | 9 | '' | ||
| + | | 10 | '' | ||
| + | | 11 | ''&&'' | ||
| + | | 12 | '' | ||
| + | | 13 | ''? | ||
| + | | 14 | '' | ||
| + | | 15 | '','' | ||
| + | |||
| + | ===== Avaliação de expressões ===== | ||
| + | |||
| + | O tipo do resultado de uma expressão numérica depende dos valores e variáveis envolvidos. Por exemplo, uma expressão contendo somente tipos '' | ||
| + | |||
| + | '' | ||
| + | |||
| + | Elementos de tipos '' | ||
| + | |||
| + | Essa regra de avaliação pode induzir a erros: | ||
| + | |||
| + | <code c media-errado.c> | ||
| + | // Cálculo da média simples de dois valores | ||
| + | #include < | ||
| + | |||
| + | int main () | ||
| + | { | ||
| + | int a = 2, b = 5; | ||
| + | float media; | ||
| + | |||
| + | media = (a + b) / 2; | ||
| + | printf(" | ||
| + | return (0) ; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | No código acima, a expressão '' | ||
| + | |||
| + | < | ||
| + | a media de 2 e 5 vale 3.000000 | ||
| + | </ | ||
| + | |||
| + | Para forçar a avaliação da expressão com reais, basta incluir um valor real: | ||
| + | |||
| + | <code c> | ||
| + | media = (a + b) / 2.0 ; | ||
| + | </ | ||
| + | |||
| + | Agora temos o resultado correto: | ||
| + | |||
| + | < | ||
| + | a media de 2 e 5 vale 3.500000 | ||
| + | </ | ||