边看代码变模拟。结果遇到一个问题,代码如下
#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,多出来的字节哪来的呢?
|