Operadores multiplicativos C
Os operadores multiplicativos executam operações de multiplicação (*
), divisão (/
) e restante (%
).
Sintaxe
multiplicative-expression
: cast-expression
multiplicative-expression
*
cast-expression
multiplicative-expression
/
cast-expression
multiplicative-expression
%
cast-expression
Os operandos do operador de restante (%
) devem ser integrais. Os operadores de multiplicação (*
) e de divisão (/
) podem usar operandos do tipo integral ou flutuante; os tipos dos operandos podem ser diferentes.
Os operadores multiplicativos executam as conversões aritméticas comuns nos operandos. O tipo do resultado é o tipo dos operandos após conversão.
Observação
Uma vez que as conversões executadas pelos operadores de multiplicação não fornecem condições de estouro ou estouro negativo, as informações poderão ser perdidas se o resultado de uma operação de multiplicação não puder ser representado no tipo dos operandos após a conversão.
Os operadores multiplicativos C são descritos nesta tabela:
Operador | Descrição |
---|---|
* |
O operador de multiplicação faz com que dois operandos sejam multiplicados. |
/ |
O operador de divisão faz com que o primeiro operando seja dividido pelo segundo. Se dois operandos inteiros forem divididos e o resultado não for um inteiro, ele será truncado de acordo com as seguintes regras: - O resultado da divisão por 0 é indefinida de acordo com o padrão ANSI C. O compilador do Microsoft C gera um erro no tempo de compilação ou no tempo de execução. - Se ambos os operandos forem positivos ou sem sinal, o resultado será truncado para 0. – Se algum operando for negativo, se o resultado da operação for o maior inteiro inferior ou igual ao quociente algébrico ou o menor inteiro superior ou igual ao quociente algébrico, ele será definido pela implementação. (Confira a seção específica da Microsoft.) |
% |
O resultado do operador de restante é o restante quando o primeiro operando é dividido pelo segundo. Quando a divisão não é exata, o resultado é determinado pelas seguintes regras: - Se o operando da direita for zero, o resultado será indefinido. - Se ambos os operandos forem positivos ou sem sinal, o resultado será positivo. - Se qualquer operando for negativo e o resultado não for exato, o resultado será definido para implementação. (Confira a seção específica da Microsoft.) |
Específico da Microsoft
A divisão onde qualquer operando é negativo, a direção de truncamento é sentido a 0.
Se uma ou outra operação for negativa na divisão com o operador de restante, o resultado terá o mesmo sinal do dividendo (o primeiro operando na expressão).
Exemplos
As declarações mostradas aqui são usadas para os seguintes exemplos:
int i = 10, j = 3, n;
double x = 2.0, y;
Esta instrução usa o operador de multiplicação:
y = x * i;
Nesse caso, x
é multiplicado por i
para fornecer o valor 20,0. O resultado tem o tipo double
.
n = i / j;
Nesse exemplo, 10 é dividido por 3. O resultado é truncado para 0, gerando um valor inteiro 3.
n = i % j;
Essa instrução aloca a n
ao restante inteiro, 1, quando 10 é dividido por 3.
Seção específica da Microsoft
O sinal do restante é o mesmo sinal do dividendo. Por exemplo:
50 % -6 = 2
-50 % 6 = -2
Em cada caso, 50
e 2
têm o mesmo sinal.
Fim da seção específica da Microsoft