首页 > 其他分享 >C语言中的#和##

C语言中的#和##

时间:2024-09-01 21:14:23浏览次数:9  
标签:## C语言 运算符 处理器 字符串 world Hello

在 C 语言中,###是预处理器运算符,具有特定的功能。

一、#运算符(字符串化运算符)

  1. 概念:

    • #运算符被称为字符串化运算符。它的作用是将其后面的参数转换为字符串常量。
  2. 作用:

    • 在宏定义中,#可以将传入的参数转换为字符串,方便输出调试信息或者构建特定的字符串。
  3. 代码例子:

    #include <stdio.h>
    
    #define PRINT_MSG(msg) printf(#msg "\n")
    
    int main() {
        PRINT_MSG(Hello, world!);
        return 0;
    }
    

    在这个例子中,PRINT_MSG(Hello, world!)会被预处理器扩展为printf("Hello, world!" "\n"),最终输出"Hello, world!"。

二、##运算符(连接运算符)

  1. 概念:

    • ##运算符被称为连接运算符。它用于在宏定义中连接两个标记(token)。
  2. 作用:

    • 可以将两个标识符、常量或者其他预处理器标记合并成一个新的标记。
  3. 代码例子:

    #include <stdio.h>
    
    #define CONCAT(a, b) a##b
    
    int main() {
        int num = CONCAT(12, 34);
        printf("%d\n", num);
        return 0;
    }
    

    在这个例子中,CONCAT(12, 34)会被预处理器扩展为1234,然后赋值给num,最终输出1234

总之,###运算符在 C 语言的预处理器中提供了强大的功能,可以在宏定义中实现字符串化和标记连接等操作,帮助程序员更灵活地编写代码。但在使用时需要注意其特定的语法和行为,以避免出现意外的结果。

标签:##,C语言,运算符,处理器,字符串,world,Hello
From: https://www.cnblogs.com/androidsuperman/p/18391737

相关文章

  • 图文教程:从0到1将项目发布到 Maven 中央仓库
    前言本文基于官方文档https://central.sonatype.org/publish/publish-guide/编写。发布步骤:创建账号创建用户Token创建命名空间配置GPG配置项目发布注意事项:发布成功的项目无法修改或者删除准备阶段创建账号已有Google或者Github账号可以跳过此步骤,可以......
  • java入门:安装开发环境
    安装JDK1:百度搜索JDK8,找到下载地址2:登录并同意协议3:下载电脑对应的版本4:双击安装JDK5:记住安装的路径(重要)6:配置环境变量我的电脑>右键>属性找到高级系统设置>环境变量>在系统设置下找到新建>变量名是JAVA_HOME>变量值填安装的路径7:配置path变量在系统变量中找到path......
  • Windows平台体验StableSwarmUI-0.6.4-Beta经验版
    目录StableSwarmUIinstall经验版StableSwarmUI配置后端StableSwarmUI快捷安装脚本StableSwarmUI安装与启动sd_xl_base_1.0模型获取由于网络原因,国内获取ComfyUI以及SD_Xl_base_1.0模型可能非常缓慢。想要丝滑获取,需要魔法或者高效上网。如果没有条件,也有方法,可以从......
  • Vue入门(四)Vue异步操作Axios
    一、Vue异步操作在Vue中发送异步请求,本质上还是AJAX。我们可以使用axios这个插件来简化操作!-使用步骤1.引入axios核心js文件。2.调用axios对象的方法来发起异步请求。3.调用axios对象的方法来处理响应的数据。-axios常用方法get:发起Get方式请求post:发起Po......
  • 云存储抽象层-FluentStorage
    FluentStorage是一个.NET云存储抽象层,支持多种云服务提供商。它提供了一个统一的API来处理不同云服务提供商的Blob存储(如AWSS3,GCP,FTP,SFTP,AzureBlob/File/EventHub/DataLake)和消息传递(如AWSSQS,AzureQueue/ServiceBus)。这个库完全用C#编写,支持.NET5+和.NETStanda......
  • 花店鲜花管理与推荐系统+Python+Django网页界面+管理系统+计算机课设
    一、介绍花店鲜花管理与推荐系统。本系统使用Python作为主要开发语言开发的一个花店鲜花管理与推荐的网站平台。网站前端界面采用HTML、CSS、BootStrap等技术搭建界面。后端采用Django框架处理用户的逻辑请求,并将用户的相关行为数据保存在数据库中。通过Ajax技术实现前后端的数......
  • 反直觉SQL举例说明
    版本MySQL5.7.34有一个student表,字段如下idnameagepositionsex建立联合索引(name,age,position)问以下的SQL哪些会使用这个索引?1、explainselect*fromstudentwherename>'AAA'2、explainselect*fromstudentwhereage=253、explainselect......
  • P10934 西瓜种植 解题报告
    题目传送门这道题也可以用贪心来做,这里讲一下差分约束的做法。看到题中给出了\(m\)条限制性的语句就联想到差分约束(差分约束的题还是很显眼的)。做差分约束的题首先得把题面抽象成很多个不等式,所以我们先来转化一下题意。首先发现求最小值,那么先确定转化方向:将所有条件转换成......
  • 八、2 DMA数据转运 DMA函数介绍
    把数组定义在Flash中,可以节省SRAM的空间去掉const不会影响程序运行,但会占用SRAM的空间1、步骤(1)RCC开启DMAD的时钟(2)调用DMA_Init,初始化参数(3)调用DMA_Cmd,通道使能若使用硬件触发,要调用×××_DMACmd开启对应外设的触发信号的输出;若需要DMA的中断,就调用DMA_ITConfig,开......
  • 如何改进yolov8网络-结合代码从模型结构改进(附源码)
    第一天:挖掘YOLOv8的潜力:从创新角度分析关键瓶颈引言YOLOv8作为最新一代的目标检测框架,在性能上有了显著提升。然而,为了进一步挖掘其潜力,我们需要从模型的创新点出发,结合代码,详细分析可能存在的瓶颈。这不仅有助于理解YOLOv8的局限性,也为后续优化提供了具体的方向。1.模......