Para los int y float e usado %d %f respectivamente. Para pintar double y long que se pone?
Muchas gracias
| |||
Respuesta: Pintar DOUBLE y LONG Si, me refiero a imprimirlos con printf. Te explico, he tenido que cambiar todos los int de mi programa por long y todos los foat por double, ya que me digeron que alguna vez podría dar problemas. Entonces lo he cambiado: variables, funciones, etc. Pero creo que da algún problema a la hora de hacer printf sobre esos porque no muestra la mismo por patanlla. tengo %d %f |
| |||
Respuesta: Pintar DOUBLE y LONG Exactamente desde que cambie los int por long y los float por double esta sentencia a cambiado, deberia de ser positivo pues es un contador que solo se incrementa, y sin embargo, después del cambio de tipos sale negativo!! printf("%d\n", numero_muestras); |
| |||
Respuesta: Pintar DOUBLE y LONG Hay algo que no entiendo, como vas a cambiar los int por los long,por que lo hiciste? Si siempre funciona barbaro! Mira esta pagina: http://www.cplusplus.com/reference/c...cstdio/printf/ .Fijate en los modificacodes de longitud(length). |
| |||
Respuesta: Pintar DOUBLE y LONG SI esta bien...pero es complicado que puedan desbordarse. La mejor practica es saber diferenciar cuando se necesitan de cuando no...ya que al utilizar long y double se utiliza mas memoria. En proyecto chico esto no influye pero a medida que se agrandan las cosas tambien el espacio de memoria utilizado... Por lo que es bueno desde la base saber diferenciar. Es mi punto de vista. |
| |||
Respuesta: Pintar DOUBLE y LONG No indicas qué compilador ni sistema operativo utilizas, esa información puede ayudar a concretar mejor una respuesta. En los compiladores para sistemas de 32 y 64 bits (prácticamente todos los actuales), el tipo int y el tipo long son el mismo (enteros de 32 bits), y si quieres un entero de 16 bits debes declararlo explícitamente como short. En los compiladores para sistemas de 16 bits, el tipo int es de 16 bits, el mismo que el tipo short, y si quieres un entero de 32 bits debes declararlo explícitamente como long. En cuanto a los tipos de coma flotante, son igual en ambos: Precisión simple (float, 32 bits) y precisión doble (double, 64 bits). En los sistemas de 32 bits, dado que ahora la memoria es barata y abundante, y los procesadores muy potentes, de cara al almacenamiento y operación no vale la pena emplear enteros de 16 bits, ya que para operar con ellos los "promocionará" a 32 bits y los "degradará" a 16 bits una vez finalizada la operación. De cara a la memoria ocupada, por temas de organización interna, y dependiendo del compilador, ocuparán 2 ó 4 bytes (aunque sólo necesiten 2). En cunto a los tipos de coma flotante, de cara a la velocidad de operación da lo mismo. Ahora las CPU llevan integrado el procesador de coma flotante, y los datos (tanto float como double) se "promocionan" a tipos internos que tienen aún más rango y precisión. Las diferencias las vas a encontrar en la precisión de los cálculos (ten en cuenta que, después de la operación, hay una "degradación" en la que se pierde información). Ciertamente, el tipo double ocupa el doble de memeoria, pero en los sistemas actuales es raro que eso sea un problema, y si necesitas mucho cálculo numérico se nota la precisión (vas perdiendo información conforme acumulas más cálculos). Sobre el desbordamiento de ese contador, repasa bien tu código. Si antes funcionaba bien y ahora no, en alguna perte debe haber un cambio que no has hecho, o que no tenías que haber hecho, o alguna conversión de tipos que, después del cambio, te está fastidiando. Resumiendo: Si tienes un compilador para 32/64 bits: - Te da lo mismo int que long (y los correspondientes unsigned). - Utiliza double, ganas precisión, no pierdes velocidad, y difícilmente la memoria será un problema. |
Etiquetas: |