C语言中的“#”和“##”

目录

  • 开头
  • 1.什么是#?
  • 2.什么是##?
  • 3.###的实际应用
    • 输出变量的名字
    • 把两个符号连接成一个符号
    • 输出根据变量的表达式
    • ……
  • 下一篇博客要说的东西

开头

大家好,我叫这是我58。在今天,我们要学一下关于C语言中的###的一些知识。

1.什么是#?

#,是一个只能用于宏的符号,用来返回#后面的量的名字(可以是变量,可以是宏,枚举常量或者字面常量,表达式也是可以的,但定义宏的时候#的右变必须是宏的参数),是一个字符串,其中,如果某个宏是#A(这里的A为字面常量)这种形式的话,那么这个宏就会返回这个字面常量转换成的字符串,比如#A(这里的A11.4514),它返回的就是11.4514这个字符串,而又比如#A(这里的A为表达式1+2),它返回的是1+2这个字符串,并且还比如#A(这里的AHello, world!这个字符串),它返回的是"Hello, world!"两边都带有"的字符串,不是两边都没带"的字符串Hello, world!。这就是#,非常简单。

2.什么是##?

在这里插入图片描述
##,也是一个只能用于宏的符号,用来返回把两个符号连接成一个符号的值,其中,这个值的类型可以是浮点型,可以是整型,可以是结构体类型,甚至也可以是一个函数!总之就是什么东西都可以合成而已,并且,在某个宏里写##的时候,##的前面和后面必须有你写的符号,否则就会报错,因此,我们可以把没定义过的CSDN或者YK1BOY##合成出一个CSDNYK1BOY来,而这就是##,跟#一样非常简单。

3.###的实际应用

输出变量的名字

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define PRINT(A) printf(#A"\n")
int main() {int i = 0;float f = 0.0f;unsigned int def = 0;PRINT(i);PRINT(f);PRINT(def);return 0;
}

把两个符号连接成一个符号

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define CAT(A, B) A##B
#define E 0
#define OF 67
#define DE(A) 1.2
#define D 666
#define E(A) 678
int main() {int i = 1;int ii = 7;int iii = 87887;printf("%d\n", CAT(i, ii));printf("%d\n", CAT(E, OF));printf("%f\n", CAT(D, E(A)));return 0;
}

输出根据变量的表达式

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define PRINT(A,FORMAT) printf(#A" = "FORMAT"\n", A)
int main() {int i = 11;float f = 4.5f;unsigned int def = 810;PRINT(i,"%d");PRINT(f,"%f");PRINT(def,"%u");return 0;
}

……

下一篇博客要说的东西

预处理指令的其中之一——#line

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

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

相关文章

《黑神话:悟空》:30%抽成真相

《黑神话&#xff1a;悟空》自建服务器出售&#xff1f;揭秘游戏界的30%抽成真相&#xff01; 近年来&#xff0c;随着游戏行业的迅猛发展&#xff0c;游戏开发商与发行平台之间的利益分配问题逐渐成为业界关注的焦点。其中&#xff0c;《黑神话&#xff1a;悟空》作为一款备受…

JS基础之【基本数据类型与类型间的隐式显示转换】

&#x1f680; 个人简介&#xff1a;某大型国企高级前端开发工程师&#xff0c;7年研发经验&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码…

streamlit+wordcloud使用pyinstaller打包遇到的一些坑

说明 相比常规的python程序打包&#xff0c;streamlit应用打包需要额外加一层壳&#xff0c;常规app.py应用运行直接使用 python app.py就可以运行程序了&#xff0c;但streamlit应用是需要通过streamlit命令来运行 streamlit app.py所以使用常规的pyinstaller app.py打包是…

云同步的使用

云同步技术是一种在多个设备或系统之间保持数据一致性的技术&#xff0c;它通常依赖于云存储服务来实现。在Java中&#xff0c;实现云同步功能通常需要与云服务提供商的API进行交互&#xff0c;如Amazon S3、Google Cloud Storage、Microsoft Azure Blob Storage等。 以下是一个…

秋风送爽,夏意未央|VELO Prevail Revo坐垫,一骑绿动起来吧~

夏末秋初&#xff0c;当第一片落叶缓缓飘落&#xff0c;是时候骑上你的自行车&#xff0c;迎接新的季节啦。带上维乐Prevail Revo坐垫&#xff0c;因为它独树一帜地采用EVA与回收咖啡渣精制而成的轻量发泡提升了减震性能&#xff0c;可以让你的每一次骑行都充满意义。    “…

虚幻引擎(Unreal Engine)技术使得《黑神话悟空传》大火,现在重视C++的开始吃香了,JAVA,Go,Unity都不能和C++相媲美!

虚幻引擎&#xff08;Unreal Engine&#xff09;火了黑神话游戏。 往后&#xff0c;会有大批量的公司开始模仿这个赛道&#xff01; C 的虚拟引擎技术通常指的是使用 C 语言开发的游戏引擎&#xff0c;如虚幻引擎&#xff08;Unreal Engine&#xff09;等。以下是对 C 虚拟引…

【virtuoso】INV 原理图+前仿真 + 版图 + 后仿真

采用SMIC工艺&#xff0c;不同工艺版图窗口可能有差异 1. 原理图&前仿真 1.1 绘制原理图 PMOS: NMOS宽长比2&#xff1a;1 PMOS开启导通电阻大一点&#xff0c;这样设置&#xff0c;可以使得阈值电压是VDD/2 按 i&#xff0c;可以插入器件按p&#xff0c;可以放置端口 1.2…

【机器学习】聚类算法的基本概念和实例代码以及局部度量学习的概念和实例代码

引言 聚类算法在许多领域都有广泛的应用&#xff0c;例如数据挖掘、生物信息学、图像处理等。 文章目录 引言一、聚类算法1.1 K-Means算法1.2 DBSCAN算法1.3 层次聚类&#xff08;Hierarchical Clustering&#xff09;算法1.4 高斯混合模型&#xff08;Gaussian Mixture Model&…

Web自动化测试实战--博客系统

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;测试&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 1.项目效果展示 2.编写web测试用例 3.自动化测试脚本开发 3.1创建空项目 引…

Web-gpt

AJAX AJAX&#xff08;Asynchronous JavaScript and XML&#xff0c;异步JavaScript和XML&#xff09;是一种用于创建动态网页应用的技术。它允许网页在不重新加载整个页面的情况下&#xff0c;异步地从服务器请求数据&#xff0c;并将这些数据更新到网页上。这提高了用户体验…

大语言模型-GLM-General Language Model Pretraining

一、背景信息&#xff1a; GLM是2020-2021年由智谱AI研究并发布的预训练语言模型。 GLM是一种基于自回归空白填充的通用预训练语言模型。 GLM 通过添加二维位置编码和允许任意顺序预测空白区域&#xff0c;改进了空白填充预训练&#xff0c;在NLU任务上超越了 BERT 和 T5。 GL…

12 对话模型微调2

1 P-Tuning P-Tuning 是在 Prompt-Tuning的基础上&#xff0c;通过新增 LSTM 或 MLP 编码模块来加速模型的收敛&#xff1b; 之前的实验也看到了使用prompt训练速度很慢&#xff0c;那么P-Tuning呢 参数占比&#xff1a; trainable params: 5,267,456 || all params: 1,308,37…

Llamaindex RAG实践

加入xtunert文档作为提示词 让大模型理解xtuner

Python 算法交易实验85 QTV200日常推进-钳制指标与交易量

说明 继续保持思考与尝试 最近挺有意思的&#xff0c;碰到很多技术上的问题&#xff0c;其解决方案都类似“阴阳两仪”的概念。 "阴阳两仪"是中国古代哲学中的一个重要概念&#xff0c;源自《易经》&#xff08;又称《周易》&#xff09;。它是对宇宙间最基本对立统一…

Java数据结构(七)——优先级队列与PriorityQueue

文章目录 优先级队列与PriorityQueue堆基本概念和性质建堆堆的插入堆的删除堆的应用 PriorityQueuePriorityQueue的构造方法PriorityQueue的常用方法PriorityQueue的模拟实现 经典TopK问题 优先级队列与PriorityQueue 优先级队列是一种特殊类型的队列&#xff0c;其中元素按照…

audiocraft - 免费文本转音乐、AI音乐生成、AI音乐创作工具,Facebook开源,本地一键整合包下载

AudioCraft 是一个由Facebook Research开发的PyTorch库&#xff0c;专注于深度学习在音频生成领域的研究。这个强大的工具包集成了两个最新的AI音频生成模型&#xff1a;AudioGen和MusicGen&#xff0c;能够产生高质量的声音和音乐。 今天的一键包也包含了 AudioGen 和 MusicG…

java一键生成数据库说明文档html格式

要验收项目了&#xff0c;要写数据库文档&#xff0c;一大堆表太费劲了&#xff0c;直接生成一个吧&#xff0c;本来想用个别人的轮子&#xff0c;网上看了几个&#xff0c;感觉效果不怎么好&#xff0c;自己动手写一个吧。抽空再把字典表补充进去就OK了 先看效果&#xff1a; …

如何使用Smart-Doc高效生成Java WebSocket接口文档

前言 Smart-Doc 是一款强大的文档生成工具&#xff0c;可以帮助开发者轻松地为Java 项目生成清晰、详细的 API 文档。随着WebSocket技术的普及&#xff0c;Smart-Doc 在3.0.7版本开始也增加了对 WebSocket 接口的支持。本文将详细介绍如何使用 Smart-Doc 生成 Java WebSocket …

最简单监控方案:域名、证书 SSL、服务器全搞定!发送钉钉告警消息

需求 有时候域名太多&#xff0c;时间一长&#xff0c;你会不记得快要续期了服务器太多&#xff0c;需要监控&#xff0c;这应该是刚需证书申请来申请去&#xff0c;自动续签鬼知道会不会出问题 痛点 监控还要安装各种东西&#xff0c;会出岔子&#xff0c;折腾够呛&#xf…

C++ 洛谷 哈希表(对应题库:哈希,hash)习题集及代码

马上就开学了&#xff0c;又一个卷季&#xff0c;不写点东西怎么行呢&#xff1f;辣么&#xff0c;我不准备写那些dalao们都懂得&#xff0c;熟练的&#xff0c;想来想去&#xff0c;最终还是写哈希表吧&#xff01;提供讲解&题目&代码解析哦&#xff01; 奉上题目链接…