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 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容