二级C语言考试辅导教程第八章:枚举,位运算[3]

二级C语言考试辅导教程第八章:枚举,位运算[3],第1张

二级C语言考试辅导教程第八章:枚举,位运算[3],第2张

二。位域的使用。位域的用法和结构成员一样,一般形式是:位域的变量名。允许以各种格式输出位字段。
main(){
struct bs
{
无符号a:1;
无符号b:3;
无符号c:4;
} bit,* pbit
bit . a = 1;
bit . b = 7;
bit . c = 15;
printf("%d,%d,%d\n ",bit.a,bit.b,bit . c);
pbit = & bit;
pbit-> a = 0;
pbit-> b & = 3;
pbit-> c | = 1;
printf("%d,%d,%d\n ",pbit->a,pbit->b,pbit-> c);
}
在上面的示例程序中定义了位域结构bs。三个位域分别是a、B、c、B、c,解释了bs类型的变量位和指向bs类型的指针变量pbit。表示该位域也可以使用指针。
程序的第9、10和11行分别给三个位域赋值。(应该注意,分配不能超出该位域的允许范围。)程序的第12行以整数格式输出三个字段的内容。第13行将位域变量bit的地址发送给指针变量pbit。第14行:通过指针将位域A重新赋值,赋值为0。第15个练习使用了复合位运算符“&=”,相当于:pbit->b=pbit->b&3。位域B的初始值为7,与3进行按位and运算的结果为3(111&011=011,十进制值为3)。同样,程序的第16行使用了复合位运算“| =”,相当于:pbit->c=pbit->c|1,结果是15。程序的第17行通过指针输出这三个字段的值。来源:www.examda.com
类型定义器Typedef

c语言不仅提供了丰富的数据类型,还允许用户定义自己的类型描述符,也就是说,允许用户为数据类型取“别名”。类型定义器typedef可以用来完成这个功能。比如有整数量a,b,解释如下:int aa,b;其中int是整数变量的类型描述符。int的完整写法是整数。
为了增加程序的可读性,整数说明符可以定义为:typedef int INTEGER。之后可以用integer代替int作为整型变量的类型描述。例子:整数a,b;相当于:int a,b;用typedef定义数组、指针、结构等类型,会带来很大的方便,不仅让程序编写简单还让意思更清晰,从而增强可读性。示例:
typedef char NAME[20];NAME是一个字符数组类型,数组长度为20。
那么,变量可以用名称来描述,比如:NAME a1,a2,s1,S2;完全等价于:Chara1 [20],A2 [20],S1 [20],S2 [20]
再比如:
typedef struct stu { Charname[20];
int age;
char sex;
} STU;
定义stu来表示STU的结构类型,然后用STU来解释结构变量:STU body1,body2
typedef定义的一般形式是:typedef原类型名和新类型名,其中原类型名包含定义部分,新类型名一般用大写字母表示,便于区分。有时候可以用宏定义来代替typedef的功能,但是宏定义是通过预处理来完成的,而typedef是在编译时完成的,更加灵活方便。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 二级C语言考试辅导教程第八章:枚举,位运算[3]

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情