次のプログラムの場合、B7が上位B0が下位になると思っていたのですが、実行してみると
01001000になっています。コンパイラによるのでしょうか?
使用したのは、フリーのBorland C++ Compiler 5.5です。
#include<stdio.h>
struct st_p1 { // struct P1
unsigned char DDR; // P1DDR
char wk; //
union { // P1DR
unsigned char BYTE; // Byte Access
struct { // Bit Access
unsigned char B7:1; // Bit 7
unsigned char B6:1; // Bit 6
unsigned char B5:1; // Bit 5
unsigned char B4:1; // Bit 4
unsigned char B3:1; // Bit 3
unsigned char B2:1; // Bit 2
unsigned char B1:1; // Bit 1
unsigned char B0:1; // Bit 0
} BIT; //
} DR; //
};
main()
{
struct st_p1 P1;
P1.DR.BYTE=0x12;
printf("%x",P1.DR.BIT.B7);
printf("%x",P1.DR.BIT.B6);
printf("%x",P1.DR.BIT.B5);
printf("%x",P1.DR.BIT.B4);
printf("%x",P1.DR.BIT.B3);
printf("%x",P1.DR.BIT.B2);
printf("%x",P1.DR.BIT.B1);
printf("%x",P1.DR.BIT.B0);
return;
}