C/Visual C - opciones de un struct

   
Vista:

opciones de un struct

Publicado por Rafael rafaelnfs261189@gmail.com (17 intervenciones) el 18/04/2016 05:26:28
espero tenga un gran dia miembros del foro, este pues como siempre mis preguntas son relacionas al c++ o al IDE de arduino estube leyendo la pagina de referencia pues bueno en un struct hacen esto.

1
2
3
4
typedef struct {
  byte pin : 6;
  byte value : 10;
} AnalogPin;

osea lo que pienso yo es que ponen valores por "default" en cada variable bueno lo puse en el Zinal pero la Salida que me da es digamos si hago esto:


1
2
3
4
typedef struct {
  int pin :6 ;
  int value : 4;
} AnalogPin;


1
2
3
4
5
6
AnalogPin uno;
cout <<"el resultado es: " <<endl;
cout <<uno.value<<endl;
 
//salida es:
//el resultado es: -2

entonces mi pregunta es para que se usan eso entonces de ponerle byte pin : 6;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

opciones de un struct

Publicado por Capitan Kirk capitan.kirk09@gmail.com (94 intervenciones) el 18/04/2016 13:57:23
No se trata de asignar valores por defecto. Esas estructuras son campos de bits, y el número que sigue a los dos puntos indica el número de bits que utiliza ese campo. En este caso, me resulta un tanto raro el que se asigne un campo de 10 bits a un elemento definido como byte (suponiendo que, en ese compilador, byte sea un tipo de 8 bits, que sería lo normal). Lo que yo he visto es que, para campos de bits, se emplea la palabra unsigned, de este modo:

1
2
3
4
5
6
typedef struct
{
    unsigned pin : 6;
    unsigned value : 10;
}
AnalogPin;

Aunque, por lo que he visto, hay algunas diferencias entre un compilador C/C++ "normal" y uno para Arduino (u otros microcontroladores, como los de la familia PIC, por ejemplo). Mira en detalle la documentación de tu compilador.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

opciones de un struct

Publicado por Rafael (17 intervenciones) el 18/04/2016 16:50:00
Si verdad esta raro eso de que se le asigne una cantidad mayor a lo que la variable puede guardar , gracias amigo por la aclaracion.
Mira entonces al valor despues de los 2 puntos nada mas le digo que use nada mas esa cantidad de bits que le especifico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar