a##b,在c语言中是什么运算?

如题所述

a##b 实际上就是ab,但要注意实际的用法:
这应该算一个预编译的运算,在宏的定义中经常用到,比如为了和防止别人定义的变量冲突我们可以定义一个宏,使我们自己的变量都带一个my_前缀,宏定义如下:
#define MY_DECLARE(type,name)\
type my_##name;

读者可以看看下面的例子程序:

#include<stdio.h>

#define MY_DECLARE(type,name)\
type my_##name;

void main(){
MY_DECLARE(int,a) // 实际上宏展开为:int my_a;
my_a=88;
printf("%d\n", my_a);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-12
##称为连接符,用来将宏参数或其他的串连接起来。
例如有如下的宏定义:
#define CON1(a, b) a##e##b
#define CON2(a, b) a##b##00
那么:
printf("%f\n", CON1(8.5, 2));
printf("%d\n", CON2(12, 34));
将被展开为:
printf("%f\n", 8.5e2);
printf("%d\n", 123400);

将上面的例子补充完整:
#include <stdio.h>
#define CON1(a, b) a##e##b#
define CON2(a, b) a##b##00
int main()
{
printf("%f\n", CON1(8.5, 2));
printf("%d\n", CON2(12, 34));
return 0;
}
运行结果:
850.000000
123400
第2个回答  2010-11-11
ERROR
第3个回答  2010-11-11
没这个运算
相似回答