在 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 + 111。乘法在前,1 * 5,所以你剩下 5 + 5 + 1 => 11.

要获得 36,请将您的宏更改为:

#define s(x) ((x)*(x))

然后会变成 ((5 + 1) * (5 + 1)) => (6 * 6) => (36)