• C++入门学习5-共用体,枚举类型,宏定义


    共用体

    共用体也称为联合体,其特点就是用一段连续的内存存储多个不同数据类型的数据,在写法上与结构体相似,但是在同一时刻,共用体中只有一个值是有效的,其大小由共用体中最大的数据类型决定,如果对共用体中的某个值做赋值操作,那么共用体中的其他值也会随之改变,所以,只有最后一次赋值是有效正确的
    共用体的一般形式

    union myUnion
    {
          int i;
          char b;
          double c;
    }u;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果对某一个成员进行赋值,其他成员也会随之改变,因为他们的值的每一个二进制位都被新值覆盖

    1.共用体的地址和它的各个成员的地址一致
    2.不能在定义时初始化,不能用共用体变量名作为函数参数
    3.不能对共用体变量名赋值,不能引用变量名获得值

    枚举类型

    枚举类型定义

    enum 枚举类型名 {标识符列表};
    
    • 1
    enum weekday {sunday,monday,tuesday,wednesday....};
    
    • 1

    枚举类型会自动填充整型常数,如:

    enum weekday {sunday=0,monday=1,tuesday=2,wednesday=3....};
    
    • 1

    如果在定义时人为填充了一部分,那么后面的标识符会根据最后一个数字累加:

    enum weekday {sunday=0,monday=10,tuesday=11,wednesday=12....};
    
    • 1

    weekday就是新定义的枚举类型名
    可以用weekday定义变量如:

    [enum] weekday myworkday;
    
    • 1

    用枚举类型定义的变量,赋值只能赋予括号内的值(标识符)


    枚举类型一旦定义,那么其中的标识符就可当做整型常数使用,如:

    #include
    using namespace std;
    enum weekday {sunday,monday,tuesday,wednesday};
    int main()
    {
        cout<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    宏定义

    不带参宏定义

    #definde pi 3.1415926
    
    • 1
    #define HHH printf("a\n");
    
    • 1

    可以宏定义一个常数,表达式,格式字符串等
    宏定义嵌套

    #define pi 3.1415926
    #define x pi*pi
    
    • 1
    • 2

    终止宏定义

    #undef pi
    
    • 1

    带参数的宏定义

    #define MUL(x,y) ((x)*(y))
    
    • 1

    注意:1.参数之间,需要加上括号,整体也需要加上括号,是为了保护低优先级的运算符
    2.宏名和带参数的括号之间不能加空格,否则将空格以后的字符都作为替代字符串的一部分!


    【样例1】用宏定义操作for循环输出666

    #include
    using namespace std;
    #define For(n) int i;for(int i=1;i<=n;i++)cout<<"666"<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    【样例2】宏定义for循环

    #include
    using namespace std;
    #define _for(i,a,b) for(i=a;i<=b;i++)
    int main()
    {
        int i;
        _for(i,1,5)
        cout<<"777"<
  • 相关阅读:
    分享wind量化交易平台接口编程代码
    RabbitMQ学习笔记(二)SpringAMQP的使用、消息转换器
    Ubuntu QtCreator不能输入中文,可以从其他位置复制中文
    计算机网络概述
    期望值、方差和标准差分别描述了什么?
    Angular 由一个bug说起之二:trackBy的一点注意事项
    bug05:腾讯短信SDK 引用报错 java.lang.NoSuchMethodError: org.json
    Linux 基础-新手必备命令
    MyBatis学习笔记(一)
    上传 iOS App ipa安装包 【推荐使用mac】
  • 原文地址:https://blog.csdn.net/qq_52508038/article/details/127865208