Autor Tema: no puedo asignar un valor de un array de bits a un valor array the bytes?  (Leído 1535 veces)

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

Desconectado javier

  • PIC10
  • *
  • Mensajes: 35
Hola, estoy migrando a la nueva version del compilador y me encuentro con este problema..
static short A[10];
static int B[10];

A[1]=1;
B[1]=A[1];


printf("%U\n\r",B[1]);

el valor de B[1] tendria que ser 1 pero es 11!...antes podia assignar variables definidas como short a variables int...ahora no?
alguna idea?
 

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: no puedo asignar un valor de un array de bits a un valor array the bytes?
« Respuesta #1 en: 05 de Febrero de 2010, 17:10:08 »
Hola, por experiencia y para evitar problemas en cualquier plataforma es recomendable castear.

Código: C
  1. static short A[10];
  2. static int B[10];
  3.  
  4. A[1]=1;
  5. B[1]=( int ) A[1];
  6.  
  7. printf("%d\n\r",B[1]);

El %d es porque estas mostrando un entero con signo, u se usa para enteros sin signo.

Saludos !
« Última modificación: 05 de Febrero de 2010, 17:14:39 por RICHI777 »

Desconectado javier

  • PIC10
  • *
  • Mensajes: 35
Re: no puedo asignar un valor de un array de bits a un valor array the bytes?
« Respuesta #2 en: 10 de Febrero de 2010, 19:55:26 »
Hola Rishi777,
no me funciona  la linea   B[1]=( int ) A[1]; 

static short A[10];
static int B[10];

A[1]=1;
lo que hice es multiplicar el valor del bit por 1
 B[1]= 1 * A[1]; 

funciona pero debe haber una manera mas simple de asignar el valor de un bit (0 o 1)a un integer
con el compilador viejo(antes de 4.0) andaba sin problemas

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: no puedo asignar un valor de un array de bits a un valor array the bytes?
« Respuesta #3 en: 11 de Febrero de 2010, 10:24:21 »
Hola lamentablemente no soy usuario cd CCS, te brinde una solución que se me ocurrio, pero al ser CCS no ANSI queda a criterio del compilador este tipo de cosas. Tal vez leyendo un poco la ayuda encuentres una manera elegante de solucionarlo.

Saludos !