当前位置: 首页 > news >正文

共用体、枚举类型、typedef定义,位运算

共用体

  union 共用体名 
    {
        数据类型1 成员变量1;
        数据类型2 成员变量2;
        数据类型3 成员变量3;
        ...
    };
    共用体所有成员变量,所占空间重叠,占共同的空间。

枚举

将变量的值一一列举出来。

enum 枚举类型名 
    {
        枚举常量1,
        枚举常量2,
        枚举常量3,
        ..
    };

注意:

  •     1.枚举类型一般说明将来变量的值在给定的常量中选择其一作为它的值
  •     2.枚举常量的值总是前一个枚举常量的值+1,第一个默认为0值
  •     3.枚举常量默认为int类型,可以直接在程序中使用
#include <stdio.h>enum weekday 
{Mon = 1,Tue,Wed,Thu,Fri,Sat,Sun,
};int main(void)
{enum weekday day;printf("请输入今天星期几:\n");scanf("%d", (int *)&day);switch (day){case Monday:printf("1和6限号!\n");break;case Tuesday:printf("2和7限号!\n");break;case Wednesday:printf("3和8限号!\n");break;case Thurday:printf("4和9限号!\n");break;case Friday:printf("0和5限号!\n");break;case Saturday:case Sunday:printf("不限行!\n");}return 0;
}

利用typedef函数声明

        用来声明新的类型名来达到给予类型的作用

typedef int I //I不是变量而是拥有int定义作用的新的类型名typedef int ARRAY[10]  //ARRAY可以定义长度为十的一维整型数组

位运算

位运算符

位运算(所有位运算要操作数的类型是与整形或者整形兼容,或者枚举也可以;但是指针,结构体这些都不可以,不与整形兼容)

运算符含义运算符含义
&按位与(指定位清零)~取反
|按位或(指定位置1)<<左移(左移一位该数乘以2)
^按位异或(指定位翻转,同0异1)>>

右移(算术右移,右移一位该数除以2)

  • 位运算符中除~以外,均为二目运算符,即要求两侧各有一个运算量。
  • 运算量只能是整型或字符型数据。
  • 左移之后,不够补0,可以实现某一位 置1
  • 右移不够向右补0,右移分为算术右移(有符号,前面补1,也可以补0;取决于i的正负,正补 0,负补1;逻辑右移(无符号,前面补0)

位运算举例

1.按位异或实现数据交换:    
a = a ^ b;
b = a ^ b;
a = a ^ b;
2.将能被三整除的比特位 置1.
​int main(void)
{unsigned int i = 0;unsigned int j = 0x422;int k;{for(k = 0;k < 32; ++k){if(k % 3 == 0){i |= (1 << k);}}}printf("%x\n",i);return 0;
}​
3.计算1的个数
int main(void)
{unsigned int i = 0x3;int counter = 0;int k;for(k = 0;k < 32; ++k){if(i & (0x80000000)){++counter;}i = i << 1;}printf("%d\n",counter);return 0;
}

相关文章:

共用体、枚举类型、typedef定义,位运算

共用体 union 共用体名 { 数据类型1 成员变量1; 数据类型2 成员变量2; 数据类型3 成员变量3; ... }; 共用体所有成员变量&#xff0c;所占空间重叠&#xff0c;占共同的空间。 枚举 将变量的值一一列举出来。 enum 枚举类型名…...

【运维】Linux如何批量解压文件夹下的很多个`.tar.gz`文件

要在Linux中批量解压这些.tar.gz文件&#xff0c;你可以使用tar命令配合find或者bash的通配符功能。这里是一个简单的步骤来解压所有这些.tar.gz文件&#xff1a; 方法 1: 使用 find 命令 find . -type f -name "*.tar.gz" -exec tar -xzvf {} \;这个命令的意思是从…...

centos9安装jumpserver并导入域用户

jumpserver是使用最广泛的开源堡垒机&#xff0c;依赖 mysql/mariadb、postgresql、redis 3个数据库。 当前版本为 4.0.1&#xff0c;安装包&#xff1a; jumpserver-ce-v4.0.1-x86_64.tar.gz 0、安装centos9&#xff0c;安装docker 1、解压安装包 cd /opt tar -xf jumpser…...

将一批 csv 的第一行抄进 Excel

某目录下有一批结构相同的 csv 文件&#xff1a; stock_301500.csvstock_320688.csv CODE,DT,OP,CL 301500,2023-06-02,71,67.8 301500,2023-06-05,79.35,72.61 301500,2023-06-06,75.8,77.65 CODE,DT,OP,CL 320688,2023-06-02,33,32 320688,2023-06-05,28.37,30.23 320688,2…...

【传知代码】LAD-GNN标签注意蒸馏(论文复现)

近年来&#xff0c;随着图神经网络&#xff08;GNN&#xff09;在各种复杂网络数据中的广泛应用&#xff0c;如何提升其在大规模图上的效率和性能成为了研究的热点之一。在这个背景下&#xff0c;标签注意蒸馏&#xff08;Label Attention Distillation&#xff0c;简称LAD&…...

JVM调优篇:探索Java性能优化的必备种子面试题

JVM内存模型 首先面试官会询问你在进行JVM调优之前&#xff0c;是否了解JVM内存模型的基础知识。这是一个重要的入门问题。JVM内存模型主要包括程序计数器、堆、本地方法栈、Java栈和方法区&#xff08;1.7之后更改为元空间&#xff0c;并直接使用系统内存&#xff09;。 正常…...

常见的内存泄漏及其解决方案

内存泄漏是Java开发中一个常见且令人头疼的问题&#xff0c;即使在使用垃圾回收机制的Java中&#xff0c;也无法完全避免内存泄漏的出现。当对象不再需要时却仍然占据着内存&#xff0c;导致内存使用量不断增加&#xff0c;最终可能导致 OutOfMemoryError。本文将深入探讨Java中…...

SQLSERVER 触发器记录表某个字段更新记录

想要记录该字段的原值和现有值&#xff0c;触发器写法&#xff1a; CREATE TRIGGER tr_UpdateEmployeeDepartment ON Employees AFTER UPDATE AS BEGINSET NOCOUNT ON; -- 避免多余的计数消息IF UPDATE(Department) -- 检查是否更新了 Department 字段BEGININSERT INTO Update…...

现代前端架构介绍(第一部分):App是如何由不同的构建块构成的

远离JavaScript疲劳和框架大战&#xff0c;了解真正重要的东西 几周前&#xff0c;我的同事们对我们的前端架构、代码结构和面临的挑战很感兴趣。在做了几次关于如何构建可扩展且健壮的前端的演讲后&#xff0c;我觉得把它们都总结一下并与社区分享我们的策略是一个不错的主意。…...

Android 11 关于按键拦截/按键事件处理分享

系统在frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java处理按键事件,不管是物理按键还是 SystemUI的nav_bar上的虚拟按键(使用了KeyEvent类中的,比如:KeyEvent.KEYCODE_VOLUME_UP). 主要注意的有两个函数&#xff1a; interceptKeyBef…...

最新TomatoIDC开源虚拟主机销售系统源码/有插件系统模块+模版系统

源码简介&#xff1a; 最新TomatoIDC开源虚拟主机销售系统源码&#xff0c;它有一个方便扩展的插件和模版系统模块&#xff0c;使用实用。 TomatoIDC&#xff0c;一款遵循GPL3.0协议的开源虚拟主机销售系统&#xff0c;不仅有着可以轻松扩展的插件系统和模版系统&#xff0c;…...

简单的docker学习 第4章docker容器

第4章 Docker容器 4.1 容器基础 4.1.1 容器启动流程 通过 docker run 命令可以启动运行一个容器。该命令在执行时首先会在本地查找指定的镜像&#xff0c;如果找到了&#xff0c;则直接启动&#xff0c;否则会到镜像中心查找。如果镜像中心存在该镜像&#xff0c;则会下载到…...

PHP中如何声明数组

数组是一种数据结构&#xff0c;用于存储一系列的值或对象&#xff0c;这些值或对象可以通过索引&#xff08;或键&#xff09;来访问。在PHP中&#xff0c;数组是一种复合类型的数据结构&#xff0c;可以存储多个值&#xff0c;这些值可以是整型、字符串、布尔值&#xff0c;甚…...

JavaScript前端面试题——fetch

什么是fetch&#xff1f; fetch&#xff1a;fetch是浏览器内置的api&#xff0c;用于发送网络请求 ajax&axios&fetch的关系 ajax&#xff1a;ajax 是一种基于原生 JavaScript 的异步请求技术。它使用 XMLHttpRequest 对象来发送请求和接收响应。 axios&#xff1a;…...

在Qt中获取Windows中进程的PID

主要是用到了系统自带的工具【tasklist.exe】 利用 QProcess调用这个tasklist有一点坑&#xff0c;已经在代码中指出了。 指定为csv格式输出的话&#xff0c;在后处理时比较方便。 QList<quint64> listProcessIdentifier(QString processName) {QProcess process;QStrin…...

8.1-java+tomcat环境的配置+代理

一、回顾 1.安装nodejs&#xff0c;这是一个jdk一样的软件运行环境 yum -y list installed|grep epel yum -y install nodejs node -v 2.下载对应的nodejs软件npm yum -y install npm npm -v npm set config .....淘宝镜像 3.安装vue/cli command line interface 命令行…...

gorm框架实现基本的增删改查

连接数据库 package mainimport ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql" )func main() {db, err : gorm.Open("mysql","root:roottcp(127.0.0.1:3306)/test?charsetutf8mb4&parseTimeTrue&locLocal…...

AUTOSAR介绍

1、AUTOSAR架构介绍 AUTOSAR(AUTomotive Open System ARchitecture&#xff0c;汽车开放系统架构)是汽车和软件行业领先公司的全球合作联盟&#xff0c;为智能移动开发和建立标准化的软件框架以及开放的E/E系统架构。考虑到目前和未来市场中不同的汽车E/E架构&#xff0c;AUTOS…...

10. 计算机网络HTTP协议

1. 前言 无论是作为后端开发、前端开发、测试开发程序员或者是运维人员,在面试过程中,大概率都会被问到 HTTP 协议相关题目。 因为伴随着 2010 年之后移动互联网在全世界的高速发展,各种各样的浏览器(Chrome、FireFox、Safari 等)层出不穷,也诞生了诸多服务端开发的语言…...

“职场中,不要和上司作对”,真的很重要吗?你认同这句话吗?

在职场上&#xff0c;领导对下属的期望永远都只有两个字&#xff0c;不是忠诚&#xff0c;也不是能力&#xff0c;而是省心。 领导对下属的要求就是别让我操心。 在职场中&#xff0c;通常面临的首要问题就是如何与领导相处。 把职场中的前辈当作老师来尊重&#xff0c;你尊…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...