Ir ao conteúdo
  • Cadastre-se

Conversão explicita no c


bruce alves

Posts recomendados

porque na linguagem c quando dividimos dois numeros inteiros, o q pode dar um valor quebrado, necessitamos fazer uma conversão explicita, tipo no código abaixo:

int main() {
int a, b;
printf("Entre com uma fracao (numerador e denominador): ")
scanf("%d %d", &a, &b);
printf("A fracao em decimal e %f\n", (float) a / b); }

 

mexi com pascal e num precisava fazer isso, porque no bendito do c precisa? o exemplo tb vale se eu usar variavel:

int a=3;
int b=2;
float c= a/b;

 

dessa maneira ele não mostraria o resultado direito, só mostrando a parte inteira da divisão, porém:

int a=3;
int b=2;
float c= (float)a/b;

 

esse código já mostraria, usando o recurso de cast mas porque?  outra coisa o c trabalha com conversão implicita porque quando uso o código abaixo:

 

main(){
       float a=5.55;
       float b=2.22;
       int c = a;
       
       printf("a media ser %i",c);
       getch();
}      


 

ele não acusa erro de tipo misturado na linha em q eu atribuo o valor de a para c, chegando mesmo a exibir o valor já convertido, correto?

Link para o comentário
Compartilhar em outros sites

quando se divide int por int o linguagem toma como não lhe é importante a parte fracionaria e a descarta, por isso precisamos de um cast, para dizer ao compilador quequeremos conservar a parte fracionaria ao operar com floats.

No caso

10 horas atrás, bruce alves disse:

 float a=5.55;

 int c = a;


você não está convertendo realmente, você esta "descartando" da parte fracionaria de 'a' ja que 'c' não está preparado para guardar tais partes, realmente o que acontece é uma "degradação" da variavel a a int.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...