我应该如何编写一个接收两个参数的宏(例如3
和2
)返回以下输出?
The sum of 3 and 2 is 5
这就是我写的,但它没有编译:
#define SOMMA(x, y) puts("La somma di " #x " e " #y " e' " #(x+y));
用
调用它SOMMA (a, b);
之前引入了a
和b
答案 0 :(得分:3)
您可以使用printf
代替puts
并执行类似的操作。
#define SOMMA(x, y) printf("sum of %d and %d is %d\n", x, y, (x + y));
注意%d
只接受整数值,因此您可能需要另一个用于double / floats的宏。
修改
正如rcgdlr所指出的,如果你想创建一个包含结果的字符串,你也可以使用sprintf
或snprintf
。
#define MAXLEN 256
#define SOMMA(x, y, res) snprintf(res, MAXLEN, "sum of %d and %d is %d\n", x, y, (x + y));
使用它:
char buffer[MAXLEN];
SOMMA(4, 6, buffer);
printf("%s\n", buffer);
答案 1 :(得分:0)
#define SOMMA(x, y) printf("The Sum Of A = %d and B= %d is %d",a,b,(a+b))