zoukankan      html  css  js  c++  java
  • C言语教程第八章:列举,位运算(5)


    二、位域的运用位域的运用和构组成员的运用相反,其一样平时形式为: 位域变量名·位域名 位域容许用种种格式输出。
    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,%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。说理解理会明了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则是在编译时完成的,后者更为灵活随意草率。

    本章小结

    1. 列举是一种基础数据典范。列举变量的取值是有限的,列举元素是常量,不是变量。

    2. 列举变量经常由赋值语句赋值,而不由静态输出赋值。列举元素虽可由系统或用户定义一个顺序值,但列举元素和整数并不相反,它们属于不同的典范。是以,也不能用printf语句来输出元素值(可输出顺序值)。

    3. 位运算是C言语的一种非凡运算恪守, 它是以二进制位为单位中缀运算的。位运算符只需逻辑运算和移位运算两类。位运算符可以与赋值符一路组成复合赋值符。如&=,|=,^=,>>=,<<=等。

    4. 应用位运算可以完成汇编言语的某些恪守,如置位,位清零,移位等。还可中缀数据的紧缩存储和并交运算。

    5. 位域在素质上也是构造典范,不过它的成员按二进制位分派内存。其定义、阐明及运用的编制都与构造相反。

    6. 位域供给了一种技艺,使得可在初级言语中完成数据的紧缩,节约了存储空间,同时也提高了法度的听命。

    7. 典范定义typedef 向用户供给了一种自定义典范阐明符的技艺,赐顾光顾了用户编程运用词汇的习气,又增添了法度的可读性。



    版权声明: 原创作品,容许转载,转载时请务必以超链接形式标明文章 原始来由 、作者信息和本声明。不然将清查功令责任。

  • 相关阅读:
    Qt 布局之二:水平、垂直布局的使用详解
    Qt 布局之一:布局初探
    [数据库] SQL 语法之进阶篇
    [数据库] SQL 语法之基础篇
    看图深入理解单链表的反转
    [数据结构
    (原)tslib的交叉编译
    (转) s-video vs. composite video vs. component video 几种视频格式详细说明和比较
    (转)BT1120接口及协议
    (转)Ubuntu12.04上NFS Server安装使用过程
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975573.html
Copyright © 2011-2022 走看看