不明白 怎么算出来的

来源:百度知道 编辑:UC知道 时间:2024/06/06 05:19:57
#include "stdio.h"
#define Y(x) 2*x+1
main()
{
int m=2;
m=Y(Y(m+1));
printf(“%d\n”,m);
}
Y(Y(m+1))
=2*Y(m+1)+1
=2*2*m+1+1+1第二到第三 是怎么变的 我变完是2*2(m+1)+1+1

好吧 首先帮你洗脑 不要被数学的模式锁定了你的思维
现在分析一下 1 将m=2 代入 得y(2+1)
2 有y(x) 2*x+1 所以 2*2+1+1(怎么样 不要受小学数学的影响 你学的是C 呵呵)
3 在推出y(m+1)=2*2+1+1
4 有y(x) 2*x+1 所以
y(y(m+1))=y(2*2+1+1)=2*2*2+1+1+1=11
5 所以结果就是11
做这些题就是不要在运算的过程中把它们马上就行进四则运算 这是错误一
不要想当然的加括号 这是错误二
多做些 仔细点 就行了

宏就是简单的直接地替换:
Y(Y(m+1))
=2*Y(m+1)+1
=2*2*m+1+1+1

m=Y(Y(m+1));

由于设置的宏,所以变成 m = 2*2*m+1+1+1 = 11

直接公式替换就行了。。。

这个程序的结果就是11