专升本 C语言笔记-05 常量定义 #define宏定义 const关键字 enum关键字

news2024/12/23 18:17:51

1.宏定义 #define的使用

1.1.宏定义的概念

宏定义就是用一个标识符来表示一个字符串,如果后面代码出现了该标识符,那么就全部替换成指定的字符串

1.2.宏定义实现案例

#include <stdio.h>
#define N 123
int main()
{
    printf("N = %d\n",N);
    printf("N + N = %d\n",N+N);
    return 0;
}

 

注意

这里 N 不是变量,N是一个常量不可被修改

1.3.使用宏定义常见的错误

我们这里写了一个宏定义,求两个数的乘积

#include <stdio.h>
#define mul(a,b) a * b
int main()
{
    printf("A = %d\n",mul(3 + 2, 3 - 2));
    printf("B = %d\n",mul(5, 1));
    return 0;
}

很多小伙伴在写程序或者考试中,在这里栽跟头难以察觉,以为自己算数算错了

但我们把程序展开来看就一目了然

mul(3 + 2, 3 - 2) = 3 + 2 * 3 - 2

改正程序,分别给a b加上括号就可以了

#define mul(a,b) (a) * (b)

 

2.const关键字

const的作用

关键字const用来定义常量,如果被const修饰,那么该标识符为一个常量,它的值就不能再被改变

例:

        

这段程序中,n被const修饰后,我们想重新赋值,就发生了报错

const的不安全性

和宏定义#define的区别是,const类型并非绝对无法修改,当我们使用指针指向const修饰的变量,仍然可以重新赋值

例:

int main()
{
    const int n = 10;
    int * p = &n;
    *p = 666;
    printf("n = %d",n);
    return 0;
}

3.enum 枚举常量

enum 标识符{常量}

enum order{
    A,B,C = 66,D,E,F
};

枚举类型,默认第1个值从0开始,后面逐次增加如果中间有赋值操作,那么从赋值位置开始,后面依然逐次增加,D的值是67,E的值是68...

 注意:

 枚举类型不可以直接赋值
例:enum order{A = 'a'}; 这个相当于新建了一个枚举类型,与原本的无关

枚举类型支持
只能使用int类型,多数编译器默认enum型长度等于int型,这里小编测试的长度是4个字节

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

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

相关文章

Linux tcpdump抓包转Wireshark 分析

简介 tcpdump 是Linux系统下的一个强大的命令&#xff0c;可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤&#xff0c;本文将展示如何使用 tcpdump 抓包&#xff0c;以及如何用 tcpdump 和 wireshark 分析网络流量 tcpdump指…

一文带你详解天池医疗数据集

医疗作为和民生健康息息相关的产业&#xff0c;通过天池大赛开放出一批有临床科研价值的数据集&#xff0c;涵盖了预防、辅诊、医学科研等主题。 与此同时&#xff0c;阿里云天池平台也积极推动产学研的共同进步&#xff0c;开源了多个本地生活领域的数据集&#xff0c;如aBea…

(含代码)利用TensorRT的8位PTQ将Stable Diffusion速度提高 2 倍

利用TensorRT的8位PTQ将Stable Diffusion速度提高 2 倍 在生成人工智能的动态领域中&#xff0c;扩散模型脱颖而出&#xff0c;成为生成带有文本提示的高质量图像的最强大的架构。 像稳定扩散这样的模型已经彻底改变了创意应用。 然而&#xff0c;由于需要迭代去噪步骤&#x…

vulhub靶场-Jangow

下载&部署 下载 下载链接&#xff1a; https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 点击下载即可 部署 因为源虚拟机是从virtualbox导出的&#xff0c;为了避免繁琐的操作步骤&#xff0c;用virtualbox来导入 virtualbox下载地址&#xff1a; https:…

2021年1月1日起四川启动食品经营许可与备案电子证书办理

12月25日&#xff0c;四川省市场监督管理局、四川省大数据中心发布《关于启用食品经营许可登记电子证书的公告》&#xff08;以下简称《公告》&#xff09;。 《公告》显示&#xff0c;为贯彻落实《食品经营许可证管理办法》、《四川省小食品作坊、小经营店、商贩管理规定》和国…

常见面试题之计算机网络

1. OSI 五层模型&#xff08;或七层模型&#xff09;是什么&#xff0c;每一层的作用是什么 应用层&#xff1a;又可细分为应用层、表示层、会话层。其中应用层主要做的工作就是为应用程序提供服务&#xff0c;常见的协议为 HTTP、HTTPS、DNS等&#xff1b;表示层主要做的工作…

PXE自动化安装操作系统

一、PXE基本介绍 PXE&#xff0c;全名Pre-boot Execution Environment&#xff0c;预启动执行环境&#xff1b; 通过网络接口启动计算机&#xff0c;不依赖本地存储设备&#xff08;如硬盘&#xff09;或本地已安装的操作系统&#xff1b; 由Intel和Systemsoft公司于1999年9月…

通过一篇文章让你了解什么是函数栈帧

函数栈帧的创建和销毁 前言一、什么是函数栈帧二、 理解函数栈帧能解决什么问题三、 函数栈帧的创建和销毁解析3.1 什么是栈3.2 认识相关寄存器和汇编指令相关寄存器eaxebxebpespeip 相关汇编命令 3.3 解析函数栈帧的创建和销毁3.3.1 预备知识3.3.2 函数的调用堆栈3.3.4 准备环…

*Javaweb -- MyBatis*

一:介绍: 1.MyBatis是一个优秀的 ①持久层 ②框架,用于简化JDBC的开发! ①:JAVAEE有三层的结构:表现层, 业务层, 持久层. 表现层代表的是页面的展示,业务层则指的是对于相关逻辑的处理, 而持久层, 指的则是对于数据进行持久化,保存在数据库当中. 持久层具体的来说就是负责…

宏碁又遭网络袭击,菲律宾分公司大量数据被盗

近日&#xff0c;宏碁&#xff08;Acer&#xff09;菲律宾公司方面证实&#xff0c;管理该公司员工考勤数据的第三方供应商遭遇网络攻击&#xff0c;部分员工数据被盗。 宏碁&#xff0c;中国台湾计算机硬件和电子产品制造商&#xff0c;以其电脑产品极具性价比而闻名。 据悉&a…

生成式AI来袭,FOSS全闪对象存储应时而生

AI大模型正飞速跃进&#xff0c;从引领文本生成革命的ChatGPT到开创文生视频新纪元的Sora&#xff0c;多模态交互技术连续迭代&#xff0c;促进了智算中心的快速落地。在这一过程中&#xff0c;算力的迅猛增长对存储系统提出了更高的要求和挑战。为满足这些日益增长的需求&…

3_springboot_shiro_jwt_多端认证鉴权_Redis缓存管理器.md

1. 什么是Shiro缓存管理器 上一章节分析完了Realm是怎么运作的&#xff0c;自定义的Realm该如何写&#xff0c;需要注意什么。本章来关注Realm中的一个话题&#xff0c;缓存。再看看 AuthorizingRealm 类继承关系 其中抽象类 CachingRealm &#xff0c;表示这个Realm是带缓存…

【Linux】Centos7上安装MySQL5.7

目录 1.下载安装包2. 上传安装包3.将 mysql 解压到/usr/local/4.重命名5.创建mysql用户及用户组6. 进入 mysql 目录修改权限7. 安装依赖库8. 执行安装脚本9. 复制启动脚本到资源目录10. 拷贝 my.cnf&#xff0c;并赋予权限11. 配置环境变量12. 启动 mysqld13. 登录 MySQL&#…

深度解析:如何运用山海鲸可视化软件制作高效销售数据看板

在数字化时代&#xff0c;数据可视化已经成为企业决策和运营的重要工具。作为一名长期使用山海鲸可视化软件的资深用户&#xff0c;我深知其在制作销售数据可视化看板方面的优势。今天&#xff0c;我想分享一些我在使用山海鲸可视化软件制作销售数据可视化看板过程中的经验和感…

探索:C++继承中虚表与虚基表的内存存储

探讨&#xff1a;菱形虚拟继承的虚基表和虚表 在继承和多态里&#xff0c;总是能听到虚表、虚基表这样的词汇&#xff0c;没有洞悉其根本的人很容易将它们混淆&#xff0c;因此&#xff0c;我们对这两个“虚”“表”进行实践&#xff0c;来更好地理解它们。 通俗些说&#xf…

哪些行业实操会用到PMP的知识?

首先说项目管理适合那些行业。 项目管理覆盖的行业可以说非常广了&#xff0c;就我知道的&#xff0c;医疗啊&#xff0c;互联网啊&#xff0c;机械啊&#xff0c;建筑啊&#xff0c;金融啊&#xff0c;汽车啊&#xff0c;零售啊、广告啊等各行各业都是需要项目管理人员的。 …

H5简约星空旋转引导页源码

源码名称&#xff1a;H5简约星空旋转引导页 源码介绍&#xff1a;一款带有星空旋转背景特效的源码&#xff0c;带有四个按钮 需求环境&#xff1a;H5 下载地址&#xff1a; https://www.changyouzuhao.cn/11655.html

32x4点阵式LCD驱动芯片/抗干扰段码屏驱动/仪器仪表液晶驱动IC- VK1C21A/B SSOP48/LQFP48 COG

产品型号&#xff1a;VK1C21A/B 产品品牌&#xff1a;永嘉微电/VINKA 封装形式&#xff1a;SSOP48/LQFP48 可定制裸片&#xff1a;DICE(COB邦定片)&#xff1b;COG(邦定玻璃用) 工程服务&#xff0c;技术支持&#xff01; 概述&#xff1a; VK1C21A/B是一个点阵式存储映射…

一个简单的微信小程序表单提交样式模板

没什么东西&#xff0c;只是方便自己直接复制使用 .wxml <view class"box"><form bindsubmit"formSubmit"><view class"form-item"><text class"head">姓名&#xff1a;</text><input class"…

目标跟踪SORT算法原理浅析

SORT算法 Simple Online and Realtime Tracking(SORT)是一个非常简单、有效、实用的多目标跟踪算法。在SORT中&#xff0c;仅仅通过IOU来进行匹配虽然速度非常快&#xff0c;但是ID switch依然非常严重。 SORT最大特点是基于Faster RCNN的目标检测方法&#xff0c;并利用卡尔…