TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: angelmt en 06 de Septiembre de 2008, 20:45:31

Título: Bug del compilador CCS o es logico?
Publicado 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
Título: Re: Bug del compilador CCS o es logico?
Publicado por: MLO__ en 06 de Septiembre de 2008, 21:33:58
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
Título: Re: Bug del compilador CCS o es logico?
Publicado por: migsantiago en 06 de Septiembre de 2008, 22:23:37
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.
Título: Re: Bug del compilador CCS o es logico?
Publicado por: Gonzalo_BlackHawk en 06 de Septiembre de 2008, 23:10:20
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.
Título: Re: Bug del compilador CCS o es logico?
Publicado por: MLO__ en 06 de Septiembre de 2008, 23:15:16
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
Título: Re: Bug del compilador CCS o es logico?
Publicado por: Nocturno en 07 de Septiembre de 2008, 01:33:29
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.
Título: Re: Bug del compilador CCS o es logico?
Publicado por: migsantiago en 07 de Septiembre de 2008, 17:21:37
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)
Título: Re: Bug del compilador CCS o es logico?
Publicado por: MLO__ en 07 de Septiembre de 2008, 20:05:05
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