在 C 语言中,预处理器 (#) 是如何被评估的?不理解这个程序的输出
in c how preprocessor(#) get evaluated ? not understanding the output of this program
这个程序的输出是什么?
#include <stdio.h>
#define s(x)x*x
int main()
{ printf("%d",s(5+1));
return 0;
}
这段代码的输出是11怎么办?
因为5 + 1 * 5 + 1
是11
。乘法在前,1 * 5
,所以你剩下 5 + 5 + 1
=> 11
.
要获得 36
,请将您的宏更改为:
#define s(x) ((x)*(x))
然后会变成 ((5 + 1) * (5 + 1))
=> (6 * 6)
=> (36)
这个程序的输出是什么?
#include <stdio.h>
#define s(x)x*x
int main()
{ printf("%d",s(5+1));
return 0;
}
这段代码的输出是11怎么办?
因为5 + 1 * 5 + 1
是11
。乘法在前,1 * 5
,所以你剩下 5 + 5 + 1
=> 11
.
要获得 36
,请将您的宏更改为:
#define s(x) ((x)*(x))
然后会变成 ((5 + 1) * (5 + 1))
=> (6 * 6)
=> (36)