字体
第(3/6)页
关灯
   存书签 书架管理 返回目录
    使意义更为明确,因而增强了可读xìng。

    例如:

    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 ncom[20];

    int age;

    char sex;

    } STU;

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

    STU body1,body2;

    typedef 定义的一般形式为:

    typedef 原类型名  新类型名

    其中原类型名中含有定义部分,新类型名一般用大写表示,以便于区别。

    有时也可用宏定义来代替 typedef 的功能,但是宏定义是由预处理完成的,而 typedef

    则是在编译时完成的,后者更为灵活方便。

    12 位运算

    前面介绍的各种运算都是以字节作为最基本位进行的。 但在很多系统程序中常要求在位

    (bit)一级进行运算或处理。C语言提供了位运算的功能,这使得C语言也能像汇编语言一样

    用来编写系统程序。

    12.1 位运算符C语言提供了六种位运算符:

    &          按位与

    |          按位或

    ^          按位异或

    ~          取反

    <<         左移

    >>         右移

    12.1.1 按位与运算

    按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只

    有对应的两个二进位均为 1 时,结果位才为 1,否则为 0。参与运算的数以补码方式出现。

    例如:9&5 可写算式如下:

    00001001        (9 的二进制补码)

    &00000101        (5 的二进制补码)

    00000001        (1 的二进制补码)

    可见 9&5=1。

    按位与运算通常用来对某些位清 0 或保留某些位。例如把 a 的高八位清 0 ,保留低八

    位,可作 a&255 运算( 255 的二进制数为 0000000011111111)。

    【例 12.1】

    main(){

    int a=9,b=5,c;

    c=a&b;

    printf("a=%d\nb=%d\nc=%d\n",a,b,c);

    }

    12.1.2 按位或运算

    按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要

    对应的二个二进位有一个为 1 时,结果位就为 1。参与运算的两个数均以补码出现。

    例如:9|5 可写算式如下:

    00001001

    |00000101

    00
上一页 目录 下一页