这个C代码的输出是如何产生的?
这是上一次考试中的一个问题,我似乎不知道我们是如何从这段代码中得到输出的。我知道如何得到5,但似乎很难解决接下来的两个数字这个C代码的输出是如何产生的?,c,output,C,Output,这是上一次考试中的一个问题,我似乎不知道我们是如何从这段代码中得到输出的。我知道如何得到5,但似乎很难解决接下来的两个数字 #include <stdio.h> #define FIRST(x,y) x + y*y #define SECOND(p,q) printf("%" #p "\n", q) int main(void) { int a = 1, b = 2; printf("%d", FIRST(a,b)); printf("%d", FIRST
#include <stdio.h>
#define FIRST(x,y) x + y*y
#define SECOND(p,q) printf("%" #p "\n", q)
int main(void) {
int a = 1, b = 2;
printf("%d", FIRST(a,b));
printf("%d", FIRST(a,b+1));
SECOND(d,a);
return 0;
}
printf(“%d”,第一个(a,b))代码>:首先(a,b)
扩展到a+b*b
。计算时,1+2*2=5。这张照片是5张
printf(“%d”,第一个(a,b+1))代码>:首先(a,b+1)
扩展到a+b+1*b+1
。计算时,1+2+1*2+1=6。这张照片是6
SECOND(d,a)代码>扩展为printf(“%”d“\n”,a)代码>1这将打印1和换行符
1宏中的#p
表示“实际参数的文字文本,转换为字符串常量”。请参阅。您不了解该计划的哪些方面?有三种单位数打印操作。宏FIRST
没有在展开中插入参数,因此其行为异常。调用SECOND时的d
用作格式,而不是变量。您可以使用i
来代替d
首先(a,b+1)
扩展到a+b+1*b+1
,该值将计算为6SECOND(d,a)
扩展到printf(“%d\n”,a)
,它将打印1。
561