Ver Mensaje Individual
  #9 (permalink)  
Antiguo 24/09/2010, 02:34
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: Positivo pasa a Negativo

Si usas Turbo C++, es probable que sea un compilador de 16 bits. Haz la prueba mediante el operador sizeof. printf("%d", sizeof(int)) te dará como resultado 2 si el compilador es de 16 bits, y 4 si es de 32.

Acerca del otro fallo, tendrías que postear código a ver si se descubre algo. Dado que hablas de simulación, intuyo que puede haber gran cantidad de iteraciones de algo, que pueden desbordar con facilidad un entero de 16 bits.

Otra posibilidad es que esa variable que se te desborda la estés utilizando antes de iniciarla a un valor. Las variables globales o las declaradas con el atributo static dentro de las funciones casi siempre se inician a 0 si no se les asigna un valor explícito, aunque hay excepciones. Las variables declaradas normalmente dentro de una función casi nunca se inician a valor alguno, y tendrán el valor que corresponda al contenido de la memoria que ocupan (es decir, valores basura), aunque también puede haber excepciones. Comprueba que no sea este tu caso, podrías encontrarte con que esa variable empieza teniendo un valor alto o incluso ya negativo.

Si el compilador es de 16 bits, utiliza %ld para long. Para double utiliza %lf.
Si el compilador es de 32 bits, da igual %d y %ld. Para imprimir te vale %f tanto para float como para double, pero tendrás que emplear %lf en scanf para double.