Ver Mensaje Individual
  #11 (permalink)  
Antiguo 28/07/2014, 15:22
shikamarucb
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Problema con printf en C

Cita:
Iniciado por CalgaryCorpus Ver Mensaje
Cuando una variable no es inicializada puede tener exactamente el valor que no esperas (o justo el que esperas). No es predecible. Es completamente posible que dentro de la casuística, tomando el caso que dices, por ejemplo, que no haya números validos, y por ello fin y pos nunca se inicializan, dentro de la "mala suerte", fin tiene un valor inicial 0 y pos tenga valor inicial 23042383, o aquel set de valores que hace que la logica que está a continuacion funcione de manera "extraña" o errática.

En otro asunto a mejorar, te sugiero usar algo que el compilador del lenguaje C provee GRATIS y que parece que no es muy conocido:
Cada vez que usas un caracter literal, el compilador REEMPLAZA ese caracter literal por el equivalente numerico.

Entonces, dado esto, es mucho mas legible un programa que dice

if( variable >= '0' && variable <= '9' )

que aquel que dice

if( variable >= 48 && variable <= 57 )

(suponiendo que esos son los valores)

No es necesario sabérselos o averiguarlos. De hecho, es posible que se cometan errores al usar esas constantes. Mucho mejor usar '0', '1', etc.
Man pero siguen mis dudas, lo digo porque cuando inicie este tema la duda era que al mantener la linea 77 en comentarios el numero imprimia bien, pero al quitar los comentarios salia un numero raro tanto en linea 70 como en la 77; y como te digo se soluciono al inicializar la variable fin; pero vuelvo a lo mismo si se hubiera ingresado un numero valido tendria que imprimir tal cual y no imprimir numeros raros. Otra solucion que encontre fue pasar del CODE::BLOCKS a GEANY lo raro es que los dos usan MinGM claro que no de la misma version; es ahi donde me siento perdido que @#$$"#! tiene que ver simplemente en que yo ponga o quite la linea en comentarios para que me haga ese "bug" y que se solucione simplemente inicializando la varible suponiendo que los numeros ingresados eran validos. De todos formas voy a reinstalar CODE::BLOCKS y probar de nuevo haber si simplemente era una falla del compilador, ya que en GEANY me funciona normal.

En cuanto a los que dices de pasarlo como caracter literal y no su equivalente en ascii, ya lo sabia y tienes razon, solo que no hace mucho programaba con arduino y usaba su equivalente en ascii y pues se me quedo esa forma