C语言 #运算符

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门


一.#运算符简介

C 语言关于 define 的文章中我们有介绍到:凡是以 # 开头的均为预处理指令,预处理又叫预编译。预编译不是编译,而是编译前的处理。这个操作是在正式编译之前由系统自动完成的。

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 #运算符
//@Time:2021/07/10 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

#include<stdio.h>

#define FUNC(a,b) printf("a+b=%d \n",((a)+(b)));

int main()
{
   FUNC(1,5);
   FUNC(100,500);
   return 0;
}

/*
输出:
a+b=6 
a+b=600 
*/

这并不是我们想要的结果,如果我们想得到的结果是:

1+5=6 
100+500=600 

可能比较聪明的小伙伴会说,这个简单:

#define FUNC(a,b) printf("%d+%d=%d \n",(a),(b),((a)+(b)));

除了这种方式,我们需要额外介绍一个方式:#运算符

C 语言允许在字符串中包含宏参数,在类函数宏(带参宏)中,# 号作为一个预处理运算符,可以把记号转换成字符串。

例如,如果 A 是一个宏形参,那么 #A 就是转换为字符串 A 的形参名。这个过程称为字符串化(stringizing)。


二.#运算符使用

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 #运算符
//@Time:2021/07/10 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

#include<stdio.h>

//#define FUNC(a,b) printf("#a+#b=%d \n",(a)+(b)); //错误写法

#define FUNC(a,b) printf(#a "+" #b "=%d \n",(a)+(b)); //正确写法

int main()
{
   FUNC(1,5);
   FUNC(100,500);
   return 0;
}

/*
输出:
1+5=6 
100+500=600 
*/

注意:

#define FUNC(a,b) printf("#a+#b=%d \n",(a)+(b)); //错误写法
#define FUNC(a,b) printf(#a "+" #b "=%d \n",(a)+(b)); //正确写法

三.猜你喜欢

  1. C语言 数组下标越界和内存溢出区别
  2. C语言 指针声明和定义
  3. C语言 指针 p++ / p–
  4. C语言 p++/(p)++/(p++)/p++
  5. C语言 使用指针遍历数组
  6. C语言 指针和数组区别
  7. C语言 指针数组和数组指针区别
  8. C语言 空指针 NULL
  9. C语言 void 指针
  10. C语言 野指针
  11. C语言 函数值传递和址传递
  12. C语言 函数缺省参数
  13. C语言 函数不定长参数
  14. C语言 函数指针
  15. C语言 指针函数
  16. C语言 回调函数 callback
  17. C语言 typedef
  18. C语言 define 定义常量
  19. C语言 define 防止头文件重复包含
  20. C语言 #pragma once
  21. C语言 #include <> 与 #include “” 区别
  22. C语言 const 修饰变量
  23. C语言 const 修饰指针
  24. C语言 const 修饰函数
  25. C语言 const 修饰函数参数
  26. C语言 const 和 define 区别
  27. C语言 #运算符

ChatGPT 3.5 国内中文镜像站免费使用啦
文章版权声明 1、本网站名称:猿说编程
2、本站永久网址:https://www.codersrc.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容