TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: angelmt en 06 de Septiembre de 2008, 20:45:31
-
Hola a todos, no se si es un bug del compilador ccs o es algo prohibido que hago yo, voy alla....
Si se usa un bucle 'for' en sentido ascendente el compilador genera el codigo correctamente , pero si se usa en forma descendente y se pone el limite a cero, cuando llega a cero sigue descontando....CONSECUENCIA:BUCLE INFINITO....me refiero a esto:
int indice;
void main()
{
for (i=1;i<9;i++) {
// bloque de setencias que se quieran ejecutar
}
Esto si genera un codigo correcto...pero si se usa en forma descendente como este, viene el problema:
int indice;
void main()
{
for (i=9;i>0;i--) {
// bloque de setencias que se quieran ejecutar
}
Mi pregunta es si es un codigo que no se puede usar o es un bug del compilador CCS.
Muchas gracias
-
Hola.
A mi me funciona correctamente, sale del for al llegar a 0. No sera que depronto estas usando la misma variable i en otro lugar dentro del for y por eso te la afecta?
Saludos
-
Es error lógico.
Cuando tienes i=1 y lo decrementa entonces i=0. Cuando tienes i=0 y lo decrementa entonces i=255, siendo 255 mayor que 0.
El valor de int i es sin signo porque el compilador CCS creo que así lo maneja, hay que checar la ayuda de CCS. Intenta declarar i como "signed int i" para que abarque de -127 a 127.
-
Es un problema de alcance de variable tal como lo explica mig, otro caso donde a mi pobre CCS lo acusan de un bug que no posee :D :D :D.
Saludos.
-
Hola.
Pero cuando i=0, ya no es mayor que 0 por lo que sale del ciclo for. Sera que depende de la version del CCS?
Saludos
-
Hola.
A mi me funciona correctamente, sale del for al llegar a 0. No sera que depronto estas usando la misma variable i en otro lugar dentro del for y por eso te la afecta?
Saludos
Va a ser que MLO tiene razón y utilizas la variable "i" dentro del bucle, porque ese for está bien construido.
-
Hola.
A mi me funciona correctamente, sale del for al llegar a 0. No sera que depronto estas usando la misma variable i en otro lugar dentro del for y por eso te la afecta?
Saludos
Va a ser que MLO tiene razón y utilizas la variable "i" dentro del bucle, porque ese for está bien construido.
Tienen razón, talvez copió mal el código en el foro y en vez de poner i>=0 puso i>0... :z)
-
Hola.
Pues si, ya que si la condicion es i>=0, ahi si que se mete en un ciclo infinito por lo que dice migsantiago.
Saludos