• Domingo 28 de Abril de 2024, 20:32

Autor Tema:  Operadores Aritméticos - Ayuda  (Leído 1112 veces)

Apokalyptica79

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Operadores Aritméticos - Ayuda
« en: Viernes 29 de Junio de 2007, 14:14 »
0
Hola leyendo la parte de Operadores Aritmeticos que dice lo siguiente:
Citar
Los operadores aritméticos nos permiten realizar operaciones entre operandos: números, constantes o variables. El resultado de una operación aritmética siempre es un número. Dado que C distingue entre los tipos de operandos (int y float) que se utilizan en una operación aritmética, en el siguiente ejemplo se presentan los operadores aritméticos, varios ejemplos de su uso y el resultado correspondiente para cada uno de estos caso. Es importante observarlos cuidadosamente. Considera que x es una variable de tipo entero (int x) y v es una variable de tipo real (float v).
Tabla
Citar
/             División              Ejemplo                       Resultado
                                        x = 4 / 3;                        x = 1
                                        x = 4.0 / 3.0;                   x = 1
                                        v = 4 / 3;                        v = 1.0
                                        v = 4.0 / 3;                      v = 1.33
                                        v = (float) 4 / 3;               v = 1.33
                                        v = ((float) 5 + 3) / 6;       v = 1.33
Mi duda es la siguiente:
1) Si yo se que v es un dato de tipo real (float) porque cuando hace el primer v = 4 / 3, le da como resultado 1.0 y no 1.33?
2) En que cambia mi ejemplo cuando agrego (float) a la operación 4 / 3?, en el tercer caso.
3) El último ejemplo de v = ((float) 5 + 3) / 6 es otro ejemplo de que puedo obtener el mismo resultado pero operando con distintos números?
Perdonen si mis preguntas son muy obvias y/o tontas, es que soy nueva en C.
Saludos y muchas gracias.
Las personas inteligentes quieren aprender, los demás enseñar...

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Operadores Aritméticos - Ayuda
« Respuesta #1 en: Viernes 29 de Junio de 2007, 15:09 »
0
lo que pasa es lo siguiente:
el 4 y el 3, son enteros, no son numeros con decimales. por lo tanto si haces.
Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.   float a;
  7.  
  8.   a = 4.0 /3.0;
  9.   printf("%f", a);
  10.   return 0;
  11. }
  12.  
  13.  

funciona como esperabas. Pero si haces lo siguiente:

Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.   float a;
  7.  
  8.   a = 4 /3;
  9.   printf("%f", a);
  10.   return 0;
  11. }
  12.  
  13.  

ya el resultado es otro porque desprecia las cifras decimales porque es una operacion entre enteros y el resultado se lo asignas a un float.

Pero si haces lo siguiente:

Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.   float a;
  7.  
  8.   a = (float)4/3;
  9.   printf("%f", a);
  10.   return 0;
  11. }
  12.  
  13.  
Funciona como vos esperas, por que?, porque el casting(conversion se podria decir) entre entero a float es explicito por lo tanto el compilador lo interpreta como en el primer caso.

Apokalyptica79

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Re: Operadores Aritméticos - Ayuda
« Respuesta #2 en: Viernes 29 de Junio de 2007, 15:14 »
0
Hola AnioN, muchas gracias por tu explicación.
Entonces poner:
Citar
#include <stdio.h>
#include <stdlib.h>

int main()
{
  float a;

  a = 4.0 /3.0;
  printf("%f", a);
  return 0;
}
Es lo mismo que poner:
Citar
#include <stdio.h>
#include <stdlib.h>

int main()
{
  float a;

  a = (float)4/3;
  printf("%f", a);
  return 0;
}
Gracias.  :D
Las personas inteligentes quieren aprender, los demás enseñar...