- (+) soma
- (-) subtração
- (*) multiplicação
- (/) divisão
- (%) resto de uma divisão entre inteiros
Os operadores binários recebem esse nome porque necessitam de dois operandos para que a operação exista.
x = a + b;
Nem todas as operações são binárias. A linguagem C disponibiliza a operação menos unário, a qual necessita somente de um operando para existir.
x = -a;
O menos unário é equivalente a multiplicação por -1. Estere aí! Na multiplicação por -1 não estamos empregando o menos unário no operando 1. Olhe o código abaixo e conclua!
x = -1 * a;
Todas as operações são aplicadas a números inteiros e de ponto flutuante, com exeção do resto.
O conceito de resto de uma divisão só existe quando falamos em números inteiros, portanto o operador % exige que seus operandos sejam do tipo int ou char.
De todas as operações, a mais ingrata é a divisão.
Você é capaz de responder o que será impresso pelo seguinte código?
001: #include <stdio.h>
002: #include <stdlib.h>
003:
004: int main(int argc, char *argv[])
005: {
006: int a = 5, b = 2;
007: float c;
008: c = a/b;
009: printf("O resultado da divisao e: %f", c);
010: system("PAUSE");
011: return 0;
012: }
Se você pensou em 2.5, você pensou errado! O resultado é 2.0. Na linguagem C, a divisão entre dois inteiros, resulta em resultado inteiro, portando o resultado da divisão entre cinco e dois, é dois.
Se a sua intensão é apresentar o resultado real da divisão então, ao menos um dos operados deverá ser de ponto flutuante. Para isso recorro a utilização do cast que faz a conversão momentânea do dado.
001: #include <stdio.h>
002: #include <stdlib.h>
003:
004: int main(int argc, char *argv[])
005: {
006: int a = 5, b = 2;
007: float c;
008: c = (float)a/b;
009: printf("O resultado da divisao e: %f", c);
010: system("PAUSE");
011: return 0;
012: }
Você pode ver a utilização do cast (float) na linha 8. Isso transforma o dado da variável a em float então este dado é dividido por 2. O resultado dessa operação é o 2.5.
Em resumo, os operadores aritméticos são tranqüilos de usar. O cuidado maior está sempre na divisão.
5 comentários:
#include
#include
main()
{
//declaracao de variaveis
float a=5,b=2,x;
//processamento
x=a/b;
printf("O valor da divisao eh: %.1f\n",x);
getch();
}
No meu compilador (Dev-c++ 4.9.9.0) rodou legal e mostra 2.5 como resultado.
#include
#include
main()
{
//declaracao de variaveis
float a=5,b=2,x;
//processamento
x=a/b;
printf("O valor da divisao eh: %.1f\n",x);
getch();
}
No meu compilador (Dev-c++ 4.9.9.0) rodou legal e mostra 2.5 como resultado.
___________________________________
Mostra 2.5 porque as três variaveis são "float's". Caso a e b fossem inteiros e x fosse float, ocorreria, detalhadamente, o seguinte :
Valor inteiro da divisão de 5 e 2 = 2. O valor deve ser um float(x=float), portanto, transformar 2 em float = 2.0
kra parabens muito bem explicado, resolveu minha dúvida.
Agradeço
Resolveu uma dúvida minha aqui em relação a divisão entre inteiros. Obrigado!
Cara como faço para saber o resto da divisão de um float? tipo essa função:
int x,contador = 0;
float p, resto;
for(x=0; x<TAM; x++){
resto = v[x]%2; //ERRO
if(resto == 0){
contador++;
}
}
p = (contador * 100) / TAM;
return p;
}
Postar um comentário