边看代码变模拟。结果遇到一个问题,代码如下
#include <stdio.h>
struct time
{
int year; /*年*/
int month; /*月*/
int day; /*日*/
};
union dig
{
char byte[6];
struct time data; /*嵌套的结构体类型*/
};
void main()
{
union dig unit;
int a=0;
int i;
printf("enter year:\n");
unit.data.year = 1976;
/*scanf("%d",&unit.data.year);/* 输入年 */
//printf("%d\n",unit.byte[0]);
printf("enter month:\n");
unit.data.month = 4;
/*scanf("%d",&unit.data.month); /*输入月 */
printf("enter day:\n");
unit.data.day = 23;
/*scanf("%d",&unit.data.day); /*输入日 */
printf("year=%d month=%d day=%d\n",
unit.data.year,
unit.data.month,
unit.data.day); /*打印输出*/
for(i = 0; i < 6; i++)
{
printf("%d,",unit.byte); /*按字节以十进制输出 */
}
printf("\n");
for(i = 0; i < 6; i++)
{
a=unit.byte;
printf("%x,",a); /*按字节以十进制输出*/
}
printf("\n");
}
输出第一个字节应该是b8,也就是184,但是结果输出-74,也即FFB8,多出来的字节哪来的呢?