位段与联合,枚举类型

来源:互联网 发布:人工智能产业高峰论坛 编辑:程序博客网 时间:2024/06/06 03:27

1.位段与联合(union)

#include <stdio.h>union{struct{unsigned int x1 : 2;unsigned int x2 : 3;unsigned int x3 : 3;}x;char y;}z;int main(){z.y = 100;printf("%d\n",z.x.x3);return 0;}
运行结果:

3

原因:联合的所有成员引用的是内存中的相同位置,100 = 0x64=0110 0100,默认小端模式,低地址存低字节,那么x1为00,x2为001,x3为011


2.枚举类型(enum)

实例:

从键盘输入一个整数,显示与该整数对应的枚举常量的英文名称。

# include <stdio.h>int main(){enum weekday { sun, mon, tue, wed, thu, fri, sat } day;//声明了一个枚举类型enum weekday,可以用此类型来定义变量, 枚举元素本身由系统定义了一个表示序号的数值,//从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…, sat值为6。并定义了一个枚举变量day,它的值只能是sum到sat之一int k;printf("input a number(0--6)");scanf("%d", &k);day = (enum weekday)k;//一个整数不能直接赋给一个枚举变量,必须强制进行类型转换才能赋值switch (day){case sun:printf("sunday/n");break;case mon: printf("monday/n");break;case tue:printf("tuesday/n");break;case wed:printf("wednesday/n");break;case thu:printf("thursday/n");break;case fri: printf("friday/n");break;case sat:printf("satday/n");break;default:printf("input error/n");break;}return 0;}
运行结果:

input a number(0-6)1

monday



0 0
原创粉丝点击