我想知道是否可以在运行时将字符粘贴为C中的标记。像,
a = OPERATION(3, 4, '+')
将被处理,
a = 3 + 4
有办法做到这一点吗?
修改:我想添加更多信息。显然,预处理器无法做到这一点。我想知道是否有一个简短的方法,
int i;
char sign[] = "+-*/";
for (i = 0; i < 4; i++)
printf("%d\n", OPERATION(3, 5, sign[i]));
我知道我们可以创建一个函数,
int OPERATION(int a, int b, char c);
但这不是我要问的。
答案 0 :(得分:3)
这个怎么样:
#define OPERATION( A, B, OP ) ((A) OP (B))
但是,正如下面的delnan所说,你必须将你的电话修改为:
a = OPERATION(3, 4, +)
答案 1 :(得分:1)
也许你想要这个:
#define OPERATION(a, b, op) ( \
(op) == '+' ? (a) + (b) : \
(op) == '-' ? (a) - (b) : \
(op) == '*' ? (a) * (b) : \
(op) == '/' ? (a) / (b) : 0)
答案 2 :(得分:1)
#define OPERATION(A,B,OP) (OP=='+'?(A)+(B):OP=='-'?(A)-(B):OP=='*'?(A)*(B):OP=='/'?(A)/(B):NULL)
OPERATION(3,5,'+')
返回8
OPERATION(9,2,'/')
返回4
OPERATION(9,3,'*')
返回27
OPERATION(3,5,'-')
返回-2
OPERATION(3,5,'M')
返回0