C语言中#和##表示什么意思

您所在的位置:网站首页 c语言u8是什么 C语言中#和##表示什么意思

C语言中#和##表示什么意思

2023-04-10 20:35| 来源: 网络整理| 查看: 265

C语言中#和##表示什么意思 发布时间:2023-04-07 09:37:02 来源:亿速云 阅读:53 作者:iii 栏目:开发技术

这篇文章主要讲解了“C语言中#和##表示什么意思”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言中#和##表示什么意思”吧!

1.#

先做一个小铺垫。C语言中允许把一个字符串拆成2个字符串。比如,下面2条语句是等价的。

printf("Hello, world!!!\n"); printf("Hello, ""world!!!\n");

也就是说,可以把"Hello, world!!!\n"拆成"Hello, “和"world!!!\n”。

而#可以把一个宏参数直接转换成相应的字符串。比如有下面这个宏:

#define CONVERT(a) #a

如果在某个地方这样调用:

int test_convert = 10; printf(CONVERT(test_convert));

在预处理之后,test_convert就会转换成相应的字符串,即"test_convert"。没错!直接把标识符作为文本转换成字符串!也就是说,上面2条语句会转换成这样:

int test_convert = 10; printf("test_convert");

屏幕上就会打印出test_convert这个字符串。

C语言中#和##表示什么意思

那么,假设有这么一个宏:

#define PRINT_MESSEGE(data, format) \         printf("The value of "#data" is "format".\n", data)

就很有意思了。结合上面的讲解,你猜猜下面的调用会输出什么?

int i = 10; PRINT_MESSEGE(i, "%d"); double d = 3.14; PRINT_MESSEGE(d, "%lf");

以PRINT_MESSEGE(i, "%d");为例。宏的第一个参数就是i,第二个参数就是"%d",具体就会替换成:printf("The value of ""i"" is ""%d"".\n", i)。根据前面讲解的字符串可以拆分的知识,这几个小的字符串也可以合并,就等价于:printf("The value of i is %d.\n", i)。所以输出结果就是:

C语言中#和##表示什么意思

2.##

##是用来连接2个标识符的。比如下面这个宏:

#define CAT(a, b) a##b

下面的代码就很有意思了:

int num5 = 20; printf("%d\n", CAT(num, 5));

解释一下,a##b就是字面意思的把a和b连起来。比如,CAT(num, 5)就会被替换成num5,所以上面的2条语句就会被替换成:

int num5 = 20; printf("%d\n", num5);

所以会输出20。

C语言中#和##表示什么意思

感谢各位的阅读,以上就是“C语言中#和##表示什么意思”的内容了,经过本文的学习后,相信大家对C语言中#和##表示什么意思这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读: 《C语言》 —— 数组详解 重新认识C语言指针(上)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c语言 上一篇新闻:typescript类型any不能分配给类型never怎么解决 下一篇新闻:redis中的分布式锁有哪些特点 猜你喜欢 为什么不推荐使用BeanUtils属性转换工具 怎么展示html格式的商品详情 C#的DateTime是什么 Java中join有什么用 Python面向对象编程怎么理解 JAVA变量和数据类型的知识点有哪些 IO的五种模型是什么 如何实现Groovy的本地安装和Eclipse插件的配置 如何编写Flink Job主程序 实用的Shell脚本有哪些


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3