union bytes{
double d;
unsigned char c [sizeof (double)];
};
int main ()
{
bytes ob={199.5};
for (int j=sizeof(double)-1; j>=0; j--)
{
cout << "byte " <<j << ": ";
for (int i=128; i; i>>=1) //
if (i & ob.c[j]) //
cout << "1";
else cout << "0";
cout << "\n";
}
_getch();
return 0;
}
, -256.5: 0 70 08 00 00 00 00 00 16
: 00 00 00 00 00 08 70 016
, , 8.
int main()
{ enum paytype {CARD, CHECK}; // 0, 1
paytype ptype; //
union
{char card[25];
long check;
} info;
:
ptype = CARD; //- CARD (0)
strcpy (info. card, "12345"); // card
ptype = paytype(1); // CHECK (1)
info. check= 105l; // check
:
switch (ptype) {
case CARD: cout <<"card:" << info. card<< endl; break;
case CHECK: cout <<"check:" << info. check<< endl; break;
}
_getch();
return 0;
}
-.
, , :
int main()
{
enum paytype {CARD, CHECK}; //
struct{
paytype ptype; //-
union
{char card[25];
long check;
} info;
} str;
:
str.ptype = paytype(0); // - ,
strcpy(str.info.card, "12345");//, ,
// card
str.ptype = paytype(1); // - ,
str.info.check= 105l; //, ,
// check
-:
switch (str.ptype) {
case CARD: cout <<"card:" << str.info.card<< endl; break;
case CHECK: cout <<"check:" << str.info.check<< endl; break;
}
_getch();
return 0;
}
++ . , . .
|
|
:
_ [_]: _;
( ). _. signed unsigned, , .
:
struct _ _ {
_1 _1: _1;
_2 _2: _2;
} __;
, . , . :
struct EXAMPLE { int i: 3;
unsigned j: 2;
int: 3;
int k: 2;
} my_struct;
4 : i ( -4 3), j ( 0 3), k ( -2 1). , EXAMPLE, k j, ( ). : .
, ( ) . . : , .
. , , , . . &, .
, , , , (.. ). , . .
. .
-. , ( ). , , . , , , . ++ ( ).
|
|
:
struct
{int a: 10;
int b: 14;
} xx;
, :
:
7 0 7 0 7 0 7 0
z z z z z z | z z z z z z z z | ww | wwwwwwww |
.b (14 ) .a (10 )
:
7 0 7 0 7 0 7 0
z z z z z z z z | z z z z z z ww | wwwwwwww |
.b (14 ) .a (10 )