#include<stdio.h>
#define N 3
#define Y(n) ((N+1)*n)
int main()
{
int z;
z=2*(N+Y(5+1));
printf("%d",z);
return 0;
}
为什么是输出48?而不是54?
z=2*(3+((3+1)*5+1))
C语言中define可以看做替代,在程序编译前先处理。也就是define N 3,意味着程序中所有N自动替换为3,然后在编译。
define Y(n) ((N+1)*n) 是这样理解的 Y(n)形式的替换为((N+1)*n) 形式,如果n为一个表达式需要看做一个整体进行替换。
z=2*(N+((N+1)*n))————n此处表示5+1,注意不加括号