一个C语言问题,给我解释一哈,先谢啦!!!

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:31:30
#define f(x) 1+x+x*x
#include<stdio.h>
void main()
{
int a=2,b=3;
printf("%d\n",f(a+b));}
急急急!!!
上面程序的结果是17,
程序中的宏定义是如何执行的,帮忙解释一哈!!
f(a+b)与上面的f(x)形式不同,我就不明白是如何执行的了。

#define f(x) 1+x+x*x是宏定义,代入时是这样:
f(a+b)=1+a+b+a+b*a+b=1+2+3+2+3*2+3=17
注意,这里代入时,不是(a+b)而是a+b。因为是f(a+b),不是f((a+b))。

就是:1+2+3+2+3*2+3=17

你是不是认为是
1+(2+3)+(2+3)*(2+3)=31 啊?

注意没有括号

楼上正解
宏定义是完全的原文代换,没有优先级概念。