有关C语言的问题,懂的进

来源:百度知道 编辑:UC知道 时间:2024/06/06 18:33:56
#include<stdio.h>
#define F(x) x-2
#define D(x) x*F(x)
void main()
{
int x=3;
printf("%d,%d",D(x),D(D(x)));
}

结果是
7,-13

实在想不通,谁能解释一下,谢谢了!!

这就是宏的特点,它不是函数
只是按照公式展开

D(x)
开开后就是
x*F(x)=> x *x-2 = 3*3-2 = 7

同理
D(D(x))
=> D(x*F(x))
=> x*F(x) * F(x*F(x))
=> x*x-2*x*x-2 -2
= 3*3-2*3*3-2-2
= -13

你这个地方出错了
#define F(x) x-2
应该是这样
#define F(x) (x-2)
如果按你原来的
printf("%d,%d",D(x),D(D(x)));
宏替回来的结果:
D(x)=x*x-2=7