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

news2025/7/10 23:54:20

入门学习五

  • 共用体
  • 枚举类型
  • 宏定义

共用体

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

union myUnion
{
      int i;
      char b;
      double c;
}u;

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

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

枚举类型

枚举类型定义

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

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

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

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

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

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

[enum] weekday myworkday;

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


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

#include<iostream>
using namespace std;
enum weekday {sunday,monday,tuesday,wednesday};
int main()
{
    cout<<sunday<<endl;

    cout<<(1+monday)<<endl;

    if(wednesday==3)
    {
        cout<<"yes";
    }
}

在这里插入图片描述

宏定义

不带参宏定义

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

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

#define pi 3.1415926
#define x pi*pi

终止宏定义

#undef pi

带参数的宏定义

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

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


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

#include<iostream>
using namespace std;
#define For(n) int i;for(int i=1;i<=n;i++)cout<<"666"<<endl;
int main()
{
    For(5);
}

【样例2】宏定义for循环

#include<iostream>
using namespace std;
#define _for(i,a,b) for(i=a;i<=b;i++)
int main()
{
    int i;
    _for(i,1,5)
    cout<<"777"<<endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做PPT绝对不能错过这5个网站

免费高质量PPT模板网站&#xff0c;建议收藏&#xff01;1、菜鸟图库 https://www.sucai999.com/pptx.html?vNTYxMjky菜鸟图库里面有各种类型的PPT模板和素材。下载后模板可以直接套用&#xff0c;也可以自己添加素材进行修改。所有素材都一一进行了详细的分类&#xff0c;而且…

【前端】Flet:一款支持python及多语言开发的UI库

文章目录介绍开发生态支持语言运行体验组件API热更新开发计划 Roadmap2022 7月-8月安全手机端桌面端Controls(控件)核心功能用户指引&#xff08;User education&#xff09;2022 9月到12月手机端控件&#xff08;Controls&#xff09;编程语言支持核心功能介绍 Flet enables …

【设计模式-2】策略模式 - 避免冗余的if-else判断。数据库迁移框架、flink 类型转换框架例子对策略模式的使用

文章目录1. 介绍2. 策略模式结构3. 策略模式使用3.1. 场景一: 表迁移3.2. flink connector类型转换1. 介绍 当if else过多时&#xff0c;可以通过策略模式来进行重构。先定义一个接口&#xff0c;各else处理分支实现这个接口&#xff0c;并定义 < 条件 , 处理类 > 的映射…

NNG 通信模式

NNG 是 nanomsg 的继任版本,纯c语言开发&#xff0c;工作模式分为几种&#xff1a; 1&#xff0c;Pipeline (A One-Way Pipe) 单向通信&#xff0c;类似与生产者消费者模型的消息队列&#xff0c;消息从推方流向拉方。 #include <stdlib.h> #include <stdio.h> #…

[附源码]java毕业设计基于的图书馆管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

RabbitMQ(四):RabbitMQ高级特性

消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 消息可靠性问题&#xff1a;如何确保发送的消息至少被消费—次延迟消息问题&#xff1a;如何实现消息的延迟投递消息堆积问题&#xff1a;如何解决数百万消息堆积&#xff0c;无法及时消费的问题高可用…

面试官:MySQL 上亿大表如何优化?

背景 XX 实例&#xff08;一主一从&#xff09;xxx 告警中每天凌晨在报 SLA 报警&#xff0c;该报警的意思是存在一定的主从延迟。&#xff08;若在此时发生主从切换&#xff0c;需要长时间才可以完成切换&#xff0c;要追延迟来保证主从数据的一致性&#xff09; XX 实例的慢…

Oracle LiveLabs实验:Manage Database Instance and Memory for Oracle Database 21c

概述 此实验申请地址在这里。 实验帮助在这里。 此实验预估完成时间100分钟。 该研讨会介绍了 Oracle 数据库实例的基本知识&#xff0c;并指导您管理 Oracle 数据库的初始化参数和内存结构。 管理初始化参数以在 Oracle 数据库上执行关键任务&#xff0c;例如管理数据库实…

【教学类-08-01】20221010《门牌号(6层*3间 黑色版)》(大班主题《我们的城市》)

效果展示 背景需求&#xff1a; 我的小课题《运用Python设计大班层次性纸类学具的案例研究》获得2022年MHQ小课题立项&#xff0c;在前期的《学号名字描字帖》《身份证》《数字分合》《破译电话号码》的基础上&#xff0c;需要设计更多与大班主题活动书上的主题相关的学习材料。…

利用css 动画实现节流

节流指的避免过于频繁的执行一个函数&#xff0c;例如&#xff1a;一个保存按钮&#xff0c;为了避免重复提交或者服务器考虑&#xff0c;往往需要对点击行为做一定的限制&#xff0c;不然会频繁的请求接口&#xff0c;之前基本上是通过js去控制节流问题&#xff0c;其实css也能…

k-form-design 改成自己组件步骤

1&#xff09;修改package.json {"name": "kk-form-design","version": "1.0.2","private": false,"description": "基于vue、ant-design-vue的表单设计器,可视化开发表单","license": &quo…

Linux下的截图工具 —— Flameshot

一、简介 Flameshot是一款功能强大但易于使用的屏幕截图软件&#xff0c;中文名称火焰截图。Flameshot 简单易用并有一个CLI版本&#xff0c;所以你也可以从命令行来进行截图。Flameshot 是一个Linux发行版中完全免费且开源的截图工具。 特性&#xff1a; 外观可定制化。易于…

数据结构-红黑树

红黑树 二分查找 二叉树 二叉平衡树 平衡因子不超1 查找和二叉查找一样的 删除和插入比较复杂 四种失去平衡的方法 LR 两步 RL 两步 不断旋转比较耗时 进一步改进&#xff1a; 红黑树RBT 调整的次数少 平衡性不如二叉平衡树 &#xff0c; 插入删除频繁的使用红黑树&…

redis的主从复制,哨兵和cluster集群

一、redis性能管理 &#xff08;1&#xff09; redis-cli 127.0.0.1:6379> info memory ​ &#xff08;2&#xff09; redis-cli info memory used_memory_rss&#xff1a;是Redis向操作系统申请的内存。used_memory&#xff1a;是Redis中的数据占用的内存。used_memo…

新手零基础自学Python,安装并配置环境+教程

第一步&#xff1a;搭建python运行环境 在 Windows 上安装 Python 和安装普通软件一样简单&#xff0c;下载安装包以后猛击“下一步”即可。 Python 安装包下载地址&#xff1a;https://www.python.org/downloads/ 打开该链接&#xff0c;可以看到有两个版本的 Python&#…

java框架 —— Spring

Spring[TOC](Spring)1、概述1.1、优点1.2、组成2. IOC概述2.1 什么是IOC2.1.1 推导过程2.1.2 IOC本质2.2 HelloSpring2.2.1 导入Jar包2.2.2 编写代码2.2.2 思考2.3 IOC过程2.4 IOC 接口3. Bean 管理3.1 基于xml方式——set方法注入3.2 FactoryBean3.3 bean 作用域3.4 bean 生命…

Java——面向对象进阶(封装、继承、多态)

Java面向对象三大特性——封装、继承、多态一、封装1.封装基本概念2.访问修饰符3.Java中封装的理解4.封装的优点二、继承1.为什么需要继承2.继承层次结构3.super和this关键字4.继承语法与设计一个继承体系三、多态1.多态的概念2.多态的实现条件3.多态的优缺点一、封装 1.封装基…

【微服务架构组件】Nacos

初识nacos 最近在整合nacos做配置的热下发&#xff0c;总结下。 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 阿里开源产品&#xff1a;什么是 Nacos 如 Na…

[Leetcode]138. 复制带随机指针的链表

目录 1.题目链接 2.1解法①(暴力) 2.1.1解法思路&#xff1a; 2.1.2代码实现&#xff1a; 2.2解法②(进阶) 2.1.1解法思路&#xff1a; 2.2.2代码实现&#xff1a; 1.题目链接 138. 复制带随机指针的链表 - 力扣&#xff08;LeetCode&#xff09; 2.1解法①(暴力) 2.1.…

软考 - 操作系统

操作系统概述 bit和byte区别 bit 位 说白了就是0或者1&#xff1b;计算机内存中的存储都是01这两个东西。 byte(B) 字节 1byte8bit&#xff08;一字节 8比特&#xff09; 1byte就是1B 1byte 存1个英文字母&#xff0c;2个byte存一个汉字。 了解 操作系统的作用&#xff1…