关于C语言中的一些宏的小知识
1.##和#
c语言中,##表示把两个宏参数贴合在一起,即,
#define call(x,y) x##y ,执行call(x,y)结果为xy,例如,
int x=2,y=5;
int xy=90;
printf("%d\n",call(x,y));//结果为90
##被称为连接符,用来将两个宏参数连接为一个宏参数。
而单个#的功能是将其后面的宏参数进行字符串化操作,简单地说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号,使其成为字符串。
以上引自百度知道。
但是好像##和#只能用在宏定义中
#include<iostream> #define fun(a,b) a##b #define f(x) #x int main() { int x = 1; int y = 2; int xy = 5; std::cout<<fun(x,y)<<"\n"<<f(xy)<<":"<<xy<<std::endl; std::cin>>x; return 0; }
以上代码运行的结果是:
5 xy:5
很有意思的运算符
时间: 2024-10-12 21:25:27