Autor Tema: Problema con signos negativos  (Leído 2331 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Problema con signos negativos
« en: 17 de Abril de 2012, 19:34:15 »
Que tal foro;

Tengo un problema con comparaciones negativas y no se a que se deba....

Estoy haciendo esto:

Código: [Seleccionar]
if(dif <= -2)
{
    --------
    --------
}

y me marca los siguientes warnings:

Warning [766] C:\P_16\MNI_MAESTRO_V1.1\Include\Funciones.c; 165. degenerate signed comparison
Warning [764] C:\P_16\MNI_MAESTRO_V1.1\Include\Funciones.c; 165. mismatched comparison

tomando en cuenta que dif es una variable de 8 bits con signo. Aun no doy con el clavo de que pueda ser. Agradecería su ayuda  :).

Saludos
Lo que no me destruye, me fortalece

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Problema con signos negativos
« Respuesta #1 en: 17 de Abril de 2012, 19:48:30 »
y que pasaria si a dif primero la comparas si es mayor que 0 y despues la multiplicas por -1 para cambiar su signo asi no tendrias problemas

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Re: Problema con signos negativos
« Respuesta #2 en: 17 de Abril de 2012, 19:52:48 »
Me agrada tu sugerencia darck_khronos, pero quisiera ahorrarme esa multiplicacion jejejeje. Será por el tipo de variable que utilizo, utilizo una tipo char
Lo que no me destruye, me fortalece

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Problema con signos negativos
« Respuesta #3 en: 17 de Abril de 2012, 19:54:09 »
Me agrada tu sugerencia darck_khronos, pero quisiera ahorrarme esa multiplicacion jejejeje. Será por el tipo de variable que utilizo, utilizo una tipo char

mmm bueno el problema es que estas utilizando un caracter y no un decimal, en todo caso el error esta en la declaracion tendrias que usar int8

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problema con signos negativos
« Respuesta #4 en: 17 de Abril de 2012, 19:56:03 »
Hola. ¿Qué compilador es? ¿Tienes la tabla de los tipos de datos?

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Re: Problema con signos negativos
« Respuesta #5 en: 17 de Abril de 2012, 20:23:47 »
Hi-Tech para PIC16
Lo que no me destruye, me fortalece

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Problema con signos negativos
« Respuesta #6 en: 17 de Abril de 2012, 20:39:00 »
has probado a declararlo como signed char?

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Re: Problema con signos negativos
« Respuesta #7 en: 17 de Abril de 2012, 21:10:27 »
si ya probe con signed char pero no me funciono, me funciono declarandolo como  short int.


Gracias  :)
Lo que no me destruye, me fortalece

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema con signos negativos
« Respuesta #8 en: 17 de Abril de 2012, 22:44:23 »
  ¿Qué versión del compilador estás utilizando?

  Acabo de compilar el siguiente código con la versión 9.8 y no arrojó ningún error ni warning.

Código: C
  1. #include <htc.h>
  2.  
  3. __CONFIG(INTIO & WDTDIS & MCLRDIS & BORDIS & UNPROTECT);
  4. #define _XTAL_FREQ 4000000
  5.  
  6. main()
  7. {
  8.  
  9.     signed char dif;
  10.  
  11.     GPIO = 0X00;
  12.     TRISIO = 0X00;
  13.     CMCON = 7;
  14.  
  15.     dif = -10;
  16.  
  17.     if (dif <= -2)
  18.     {
  19.       GPIO0 = 0;
  20.     }
  21.  
  22.     while(1);
  23. }
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Re: Problema con signos negativos
« Respuesta #9 en: 18 de Abril de 2012, 19:26:19 »
Que tal AngelGris


La versión que tengo es la 9.70 Pro Mode.....
Lo que no me destruye, me fortalece

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema con signos negativos
« Respuesta #10 en: 18 de Abril de 2012, 22:18:58 »
  Yo hice la prueba con la versión lite (después de pasado el tiempo de prueba)

  No creo que la versión lite se comporte mejor que la pro, pero tal vez sí sea un problema de la versión 9.7 y que haya sido solucionado en la 9.8.

  Según el manual de la versión 9.8, una variable short es de 16 bits al igual que una variable int, mientras que un char es de 8 bits.

  Si en tu caso sería suficiente con una variable char, estarías perdiendo 8 bits de ram al tener que utilizar una variable short para que te funcione. Es un simple comentario, que tal vez no importe porque te alcanza la memoria tranquilamente.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: Problema con signos negativos
« Respuesta #11 en: 19 de Abril de 2012, 07:13:53 »
Hola, quizá parecerá una tontería, pero prueba a meter el -2 entre paréntesis para la comparación, a ver que pasa.