Foros del Web » Programación para mayores de 30 ;) » C/C++ »

¿Conversiones explícitas en C?

Estas en el tema de ¿Conversiones explícitas en C? en el foro de C/C++ en Foros del Web. Estoy estudiando C con un tutorial, pero en el tema de "expresiones" me dice esto: int num1; double num2; num1=sqrt ( (double) num2); /*sqrt() resuelve ...
  #1 (permalink)  
Antiguo 14/06/2006, 13:50
 
Fecha de Ingreso: mayo-2006
Mensajes: 212
Antigüedad: 18 años, 6 meses
Puntos: 1
¿Conversiones explícitas en C?

Estoy estudiando C con un tutorial, pero en el tema de "expresiones" me dice esto:
int num1;
double num2;
num1=sqrt ( (double) num2);
/*sqrt() resuelve la raíz cuadrada de su único argumento*/


pero... 1.¿de dónde saca que esto es una raíz cuadrada?
2.se supone que el valor de num1 (por ser declarada como "int") es de números enteros.
3.¿en qué afecta la conversión explícita a la expresión?

Gracias amigos.
  #2 (permalink)  
Antiguo 14/06/2006, 14:11
 
Fecha de Ingreso: mayo-2006
Mensajes: 212
Antigüedad: 18 años, 6 meses
Puntos: 1
Ok, ya entendí lo de "sqrt" y lo de "int" con num1; de todas formas gracias.
  #3 (permalink)  
Antiguo 14/06/2006, 14:30
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años, 7 meses
Puntos: 9
Por si acasi te diré que la función sqrt significa hacer la raíz cuadrada. Es así porque sí y no hay ninguna razón, es el nombre que se le ha dado a ésta función. Para que funcione tienes que poner #include <math.h> ya que está incluída en esta biblioteca.
  #4 (permalink)  
Antiguo 14/06/2006, 14:57
 
Fecha de Ingreso: mayo-2006
Mensajes: 40
Antigüedad: 18 años, 6 meses
Puntos: 0
1. sqrt es una funcion de la libreria estandar de funciones matematicas, declarada en el encabezado <math.h>, que te regresa la raiz cuadrada de un numero. Si apenas estas comenzando a aprender el lenguaje C quiza todavia no sepas que es una libreria, pero digamos que en terminos generales, una libreria es un conjunto de funciones que tu puedes usar en tu programa, y una "libreria estandar" es una que tu puedes tener la seguridad que se va a encontrar en cualquier compilador de C que estes usando. Existen distintas librerias estandar enfocadas cada una a cierto tema. Por ejemplo, una de las mas usadas es la de entrada y salida estandar (<stdio.h>), otra muy usada tambien es la libreria estandar (<stdlib.h>) para usar funciones tales como solicitar memoria dinamica o generar numeros aleatoreos, etc., y la mencionada al principio para funciones matematicas y otras muchas mas.

2. Tu puedes declarar una variable de cierto tipo, pero esto no te restringe para que puedas usarla "como siendo" de otro tipo. C a diferencia de otros lenguajes (como por ejemplo Pascal), te permite intercambiar distintos tipos sin que haya problema. Por ejemplo el tipo char se puede intercambiar libremente en las operaciones aritmeticas que usan enteros sin ningun problema. En este caso, la declaracion de la funcion sqrt es double sqrt (double). Esto significa que la funcione espera que le des un numero de tipo double y regresa otro numero del mismo tipo. Entonces en la linea del ejemplo num1=sqrt ( (double) num2);, lo que hace el compilador es primero calcular la raiz cuadrada del numero contenido en la variable num2, y despues trunca el resultado para que quepa en un entero y poder asignarselo a la variable num1.

3. En este ejemplo esta de mas forzar la variable num2 a que sea del tipo double en (double) num2, ya que esta variable ya esta declarada como double. En C puedes forzar a que una variable sea de otro tipo anteponiendo a la variable, el nombre del tipo entre parentesis.
  #5 (permalink)  
Antiguo 14/06/2006, 15:31
 
Fecha de Ingreso: mayo-2006
Mensajes: 212
Antigüedad: 18 años, 6 meses
Puntos: 1
Pitukilloloco, gracias hermano; claro que se nota que estoy en proceso de aprendizaje y por eso me acerco a ustedes, pues por acá no hay muchas personas que estén dispuestos a compartir sus conocimientos sin recibir algo a cambio, a veces no quieren hacerse un tiempo para ello; pero agradezco tu explicación, la cual fue excelente y muy oportuna.
Gracias hermano.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:13.