怎么做时时彩彩票网站/比百度好用的搜索软件手机版

怎么做时时彩彩票网站,比百度好用的搜索软件手机版,盐城网站开发如何,室内设计培训班靠谱吗一:宏常量 和 const常量的区别 宏常量 使用预处理器指令#define来定义。 #define PI 3.14159 没有类型信息,仅仅是简单的文本替换。这意味着编译器不会对宏进行类型检查,可能导致潜在的错误。宏不是变量,不占用内存空间。它只是在预处理阶…

一:宏常量 和 const常量的区别

宏常量

  • 使用预处理器指令#define来定义。
#define PI 3.14159
  • 没有类型信息,仅仅是简单的文本替换。这意味着编译器不会对宏进行类型检查,可能导致潜在的错误。
  • 宏不是变量,不占用内存空间。它只是在预处理阶段将所有出现的宏名替换为相应的值。
  • 由于宏仅是文本替换,在调试时查看变量值时无法直接看到宏的名字,这可能使调试更加困难。

  • 宏的作用范围从定义点开始直到文件结束或遇到#undef指令为止,不具备块级作用域的概念。宏是全局性的,除非特别限制在一个文件内通过条件编译实现。

  • 适合用于定义简单的常数值,特别是当这个值需要被用作数组大小、case标签或其他不允许有变量的地方。也常用于条件编译。

const常量

  • 使用const关键字定义,并指定类型。
const double pi = 3.14159;
  • 具有明确的数据类型,编译器可以执行类型检查,有助于减少编程错误。
  • 通常会在内存中分配空间,
  • 可以在调试器中查看const常量的名称和值,提供更好的调试支持。

  • 遵循C语言的作用域规则,可以根据定义位置有不同的作用域(如局部、文件作用域等)。可以通过static关键字限制其作用域到单个文件。

  • 适用于需要类型安全的场合,以及希望利用C语言作用域规则控制可见性的场景。

 二: #define MAX 10 与const int b = 10的区别

 #define MAX 10

  • 这是通过预处理器(Preprocessor)实现的宏定义。
  • 在编译之前,所有的 MAX 都会被直接替换为 10
  • 它是一个简单的文本替换机制,不涉及类型检查。
  • 没有类型信息,只是简单的文本替换。
  • 宏定义的作用范围从定义处开始,直到文件结束,或者遇到 #undef 指令。
  • 它没有块作用域的概念,适用于整个文件或多个文件(如果在头文件中定义并包含)。
  • 不分配内存,因为它是预处理阶段的文本替换。
  • MAX 只是一个占位符,在编译后的代码中不存在实际的存储空间。
  • 因为宏定义在预处理阶段被替换,调试时无法看到 MAX 的存在。
  • 如果出现错误,调试器只会显示替换后的值(如 10),而不是 MAX
  • 因为是简单的文本替换,不会引入额外的运行时开销。
  • 但在某些情况下,宏定义可能会导致代码膨胀。例如:
#define SQUARE(x) ((x) * (x))
int y = SQUARE(5 + 2); // 替换后变为 ((5 + 2) * (5 + 2)),可能会有多余的计算
  • 适合用于简单的常量定义,尤其是需要跨文件共享的常量。
  • 适合用于条件编译(如 #ifdef#ifndef 等)。
#define DEBUG_MODE 100
#ifdef DEBUG_MODE
printf("Debugging...\n");
#endif
  • 如果你在代码中不小心误用了 MAX,编译器可能不会报错。例如:
#define MAX 10
int arr[MAX]; // 正确
int x = MAX + "string"; // 错误,但编译器可能不会立即报错


const int b = 10;

  • 这是一个真正的变量声明,带有类型信息(int)。
  • 编译器会为 b 分配内存,并且它的值在程序运行期间不能被修改。
  • 它是C语言中的常量变量,具有类型安全性。
  • 具有明确的类型(int),编译器会对类型进行检查。    
  • 常量变量的作用范围遵循C语言的变量作用域规则。                
  • 如果定义在函数内部,则只在该函数内有效;如果定义在全局范围内,则在整个文件或模块内有效。                
  • 在内存中会分配存储空间(通常是只读区域)。
  • 虽然 b 的值不能被修改,但它仍然占用一定的内存。
  • 调试时可以看到 b 的名字和值,便于排查问题。
  • 因为是变量,访问时可能会有微小的运行时开销(通常可以忽略)。
  •  如果你试图将 b 用于不兼容的类型操作,编译器会报错。例如:
const int b = 10;
int arr[b]; // 正确
int x = b + "string"; // 编译器会报错
  • 更适合用作局部常量或需要类型安全的场景。
void func() {const int size = 10;int arr[size];
}

特性#define MAX 10const int b = 10;
本质预处理器宏定义带类型的常量变量
类型检查
作用范围文件范围(或 #undef 结束)遵循变量作用域规则
内存分配
调试支持
性能无运行时开销微小运行时开销(可忽略)
适用场景跨文件共享常量、条件编译局部常量、类型安全要求高的场景

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

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

相关文章

docker - compose up - d`命令解释,重复运行会覆盖原有容器吗

docker - compose up - d`命令解释,重复运行会覆盖原有容器吗 docker - compose up - d 是一个用于管理 Docker 容器的命令,具体含义如下: 命令含义: up:用于创建、启动并运行容器,会根据 docker - compose.yml 文件中定义的服务配置来操作。-d:表示以“分离模式”(det…

03-SpringBoot3入门-配置文件(自定义配置及读取)

1、自定义配置 # 自定义配置 zbj:user:username: rootpassword: 123456# 自定义集合gfs:- a- b- c2、读取 1)User类 package com.sgu.pojo;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.spring…

进程状态:Linux的幕后指挥管理,穿越操作系统进程的静与动

文章目录 引言:进程的生命与状态:动与静的交响曲一、操作系统中的进程状态概述1.1 经典的进程状态模型1.2 进程状态转换图 二、Linux操作系统中的进程状态2.1 Linux进程状态的分类2.2 各状态的详细解释 2.3 Linux进程状态表2.4 使用ps查看进程状态三、进…

MOSN(Modular Open Smart Network)-05-MOSN 平滑升级原理解析

前言 大家好,我是老马。 sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFAStack-00-sofa 技术栈概览 MOSN(Modular O…

构建高可用性西门子Camstar服务守护者:异常监控与自愈实践

在智能制造领域,西门子Camstar作为领先的MES系统承载着关键生产业务。但在实际运维中,我们发现其服务常因数据库负载激增(如SQL阻塞链超时)或应用服务器资源耗尽(CPU峰值达90%以上)导致服务不可用。传统人工干预方式平均故障恢复时间长达47分钟,这对连续生产场景构成了严…

arm之s3c2440的I2C的用法

基础概念 IC(Inter-Integrated Circuit)又称I2C,是是IICBus简称,所以中文应该叫集成电路总线。 IIC的总线的使用场景,所有挂载在IIC总线上的设备都有两根信号线,一根是数据线SDA,另一 根是时钟…

STM32F103_LL库+寄存器学习笔记10 - DMA传输过半+DMA传输完成中断实现DMA串口接收“双缓冲“

导言 《[[STM32F103_LL库寄存器学习笔记09 - DMA串口接收与DMA串口发送,串口接收空闲中断]]》上一章节完成DMA发送与接收。此时,有一个致命的问题可能会导致数据包丢失。原因是USART1接收只开启了接收空闲中断(IDLE),DMA在连续模式下&#xf…

李宏毅机器学习笔记06 | 鱼和熊掌可以兼得的机器学习 - 内容接宝可梦

本章提要 深度学习可以在较少参数量的情况下得到比较低的loss: h a l l a r g min ⁡ h ∈ H L ( h , D a l l ) h^{all}arg \min_{h \in H}L(h,D_{all}) hallargminh∈H​L(h,Dall​) 引入 如何权衡模型的复杂程度 Tradeoff of Model Complexity 理论上&#…

海康gdb流程

gdb相关 在initrun.sh文件里加入,注意需要在hikauto起来之前 # 设置core dump大小 ulimit -c unlimited if [ $? -eq 0 ];then echo "core dump size set success" else echo -e "\33[31m core dump size set fail\33[0m" fi echo …

springBoot统一响应类型3.3版本

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

基于Linux下的MyBash命令解释器

项目介绍:⼀个⽤C语⾔实现的简单shell,可以接受⽤⼾输⼊的命令并执⾏操作,⽀持多管道和重 定向。 mybash---打造自己的命令解释器 目前我们Linux的系统默认的命令解释器是bash; 命令解释器(也称为命令行解释器或shell&#xff0…

Ingredient-oriented Multi-Degradation Learning for Image Restoration论文阅读

摘要:重点在于关联多个任务本质的联系。 不同恢复任务的关联性很重要。 揭示退化现象的内在机理联系很有意义。 多合一的方法能在单一模型中处理多种退化问题,可扩展性较差。 成分导向范式挖掘不同图像退化现象背后的物理规律或特征模式。 成分导向退化重…

禅道后台命令执行漏洞

漏洞简介 禅道是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、 组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整地覆盖了项目管理的核心流程。 禅道管理思想注重实效,功能完备丰富,…

密码学——知识问答

目录 1、阐述公开密钥算法的定义,结合RSA算法说明公钥密码的基本要求。 说明公钥与私钥两种密码学并举例与其应用 1. 公钥密码学(非对称加密): 2. 私钥密码学(对称加密): 对比公钥与私钥密码…

海思烧录工具HITool电视盒子刷机详解

HiTool是华为开发的一款用于海思芯片设备的刷机和调试工具,可对搭载海思芯片的机顶盒、智能电视等设备进行固件烧录、参数配置等操作。以下为你详细介绍: 功能用途 固件烧录:这是HiTool最主要的功能之一。它能够将下载好的适配固件文件烧录到…

软考中级-软件设计师 23种设计模式(内含详细解析)

23种设计模式 🎯 创建型设计模式📌 抽象工厂(Abstract Factory) 设计模式📌 工厂方法(Factory Method)设计模式📌 单例(Singleton)设计模式📌 生成…

软考笔记5——软件工程基础知识

第五章节——软件工程基础知识 软件工程基础知识 第五章节——软件工程基础知识一、软件工程概述1. 计算机软件2. 软件工程基本原理3. 软件生命周期4. 软件过程 二、软件过程模型1. 瀑布模型2. 增量模型3. 演化模型(原型模型、螺旋模型)4. 喷泉模型5. 基于构建的开发…

Git入门——常用指令汇总

以下是一份精心整理的 Git常用指令速查表,基本覆盖日常开发使用场景,建议收藏备用👇 🔧 环境配置 指令作用git config --global user.name "你的名字"设置全局用户名git config --global user.email "你的邮箱&qu…

常见中间件漏洞攻略-Jboss篇

一、CVE-2015-7501-Jboss JMXInvokerServlet 反序列化漏洞 第一步:开启靶场 第二步:访问该接口,发现直接下载,说明接⼝开放,此接⼝存在反序列化漏洞 http://47.103.81.25:8080/invoker/JMXInvokerServlet 第三步&…

播放本地视频-实现视频画廊功能

实现一个视频画廊,播放本地视频 可以切换不同视频的功能 文章目录 需求:场景实现方案遇到的坑播放器选择界面显示不全视频友好显示问题缓存 总结 需求: 实现一个视频画廊,播放本地视频 可以切换不同视频的功能 场景 图片画廊的…