Autor Tema: Bug del compilador CCS o es logico?  (Leído 3712 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado angelmt

  • PIC10
  • *
  • Mensajes: 19
Bug del compilador CCS o es logico?
« 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

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Bug del compilador CCS o es logico?
« Respuesta #1 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
El papel lo aguanta todo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Bug del compilador CCS o es logico?
« Respuesta #2 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.
« Última modificación: 06 de Septiembre de 2008, 22:26:51 por migsantiago »

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Bug del compilador CCS o es logico?
« Respuesta #3 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.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Bug del compilador CCS o es logico?
« Respuesta #4 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
El papel lo aguanta todo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Bug del compilador CCS o es logico?
« Respuesta #5 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.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Bug del compilador CCS o es logico?
« Respuesta #6 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)

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Bug del compilador CCS o es logico?
« Respuesta #7 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
El papel lo aguanta todo


 

anything