【c专家编程】分析c语言的声明

联合:

在结构中,每个成员依次存储,而在联合中,所有成员都从偏移地址零开始存储,联合一般被用来节省空间,用法和struct相同。

union bits32_tag {
    int whole; // 一个32位的值
    struct {char c0, c1, c2, c3;} byte; //4个8位的字节
};

int main()
{
    bits32_tag value;
    value.whole = 0b1111111111111111;
    cout << "value.whole: " << value.whole << endl; // 65535
    cout << "c0: " << (size_t)value.byte.c0 <<endl; // 4294967295
    cout << "c1: " << (size_t)value.byte.c1 <<endl; // 4294967295
    cout << "c2: " << (size_t)value.byte.c2 <<endl; // 0
    cout << "c3: " << (size_t)value.byte.c3 <<endl; // 0
    return 0;
}

枚举:把一串名字与一串整型值联系在一起

格式:enum 可选标签 {...} 可选变量定义;

enum sizes {
    small = 7,
    medium,
    large = 10,
    humungous
};

int main()
{
    cout << small << " " << medium << " " << humungous ;
    return 0;
}

缺省情况下,整型值从零开始,如果对列表中的某个标识符进行了赋值,那么其后的标识符的值比所赋的值大1。枚举有个优点,#define定义的名字一般在编译的时候被丢弃(被值给取代),而枚举名字则通常一直在调试器中可见,可以在调试代码时使用它们。

 

posted @ 2017-04-19 22:13  合唱团abc  阅读(215)  评论(0编辑  收藏  举报