当前位置:首页 > 全部子站 > IT > 水平考试

C语言初学者入门知识之枚举与位运算2 2

来源:长理培训发布时间:2017-10-20 13:05:59

  二、位域的使用

  位域的使用和结构成员的使用相同,其一般形式为: 位域变量名·位域名 位域允许用各种格式输出。

  main(){

  struct bs

  {

  unsigned a:1;

  unsigned b:3;

  unsigned c:4;

  } bit,*pbit;

  bit.a=1;

  bit.b=7;

  bit.c=15;

  printf("%d,%d,%dn",bit.a,bit.b,bit.c);

  pbit=&bit;

  pbit->a=0;

  pbit->b&=3;

  pbit->c|=1;

  printf("%d,%d,%dn",pbit->a,pbit->b,pbit->c);

  }

  上例程序中定义了位域结构bs,三个位域为a,b,c。说明了bs类型的变量bit和指向bs类型的指针变量pbit.这表示位域也是可以使用指针的。

  程序的9、10、11三行分别给三个位域赋值。( 应注意赋值不能超过该位域的允许范围)程序第12行以整型量格式输出三个域的内容。第13行把位域变量bit的地址送给指针变量pbit.第14行用指针方式给位域a重新赋值,赋为0.第15行使用了复合的位运算符"&=", 该行相当于: pbit->b=pbit->b&3位域b中原有值为7,与3作按位与运算的结果为3(111&011=011,十进制值为3)。同样,程序第16行中使用了复合位运算"|=",,相当于: pbit->c=pbit->c|1其结果为15.程序第17行用指针方式输出了这三个域的值。

  类型定义符typedef

  C语言不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说明符,也就是说允许由用户为数据类型取"别名"。 类型定义符typedef即可用来完成此功能。例如,有整型量a,b,其说明如下: int aa,b; 其中int是整型变量的类型说明符。int的完整写法为integer,

  为了增加程序的可读性,可把整型说明符用typedef定义为: typedef int INTEGER 这以后就可用INTEGER来代替int作整型变量的类型说明了。 例如: INTEGER a,b;它等效于: int a,b; 用typedef定义数组、指针、结构等类型将带来很大的方便,不仅使程序书写简单而且使意义更为明确,因而增强了可读性。例如:

  typedef char NAME[20]; 表示NAME是字符数组类型,数组长度为20。

  然后可用NAME 说明变量,如: NAME a1,a2,s1,s2;完全等效于: char a1[20],a2[20],s1[20],s2[20]

  又如:

  typedef struct stu{ char name[20];

  int age;

  char sex;

  } STU;

  定义STU表示stu的结构类型,然后可用STU来说明结构变量: STU body1,body2;

  typedef定义的一般形式为: typedef 原类型名 新类型名 其中原类型名中含有定义部分,新类型名一般用大写表示, 以便于区别。在有时也可用宏定义来代替typedef的功能,但是宏定义是由预处理完成的,而typedef则是在编译时完成的,后者更为灵活方便。

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部