mdsk.net
当前位置:首页 >> #inCluDE<stDio.h> #DEFinE F(x) x*x voiD mAin... >>

#inCluDE<stDio.h> #DEFinE F(x) x*x voiD mAin...

宏是简单的替换,即将x*x中的x简单的替换成4+4,就成了4+4*4+4/(2+2); 用宏时可多用几个括号如 #define f(x) (x)*(x)

#define定义的宏都是直接替换的,括号x是什么就替换成什么F(a+b) = a+b*a+b = 2+1*2+1 =5我觉得你认为是 9,如果 #define F(x) x*x修改为 #define F(x) (x)*(x) 就是9了.

#define F(x) x*x 改为#define F(x) (x)*(x)

#include #define f(x) (x)*(x)int main(){ int i ; i=f(4+4)/(2+2); printf("%d\n",i); return 0;}

4+4*4+4/4=21 你要的那结果应该这么写#include #define f(x) (x)*(x) main() { int i; i=f(4+4)/f(2+2); printf("%d\n",i); }

#include#define f(x) x*x main() { int a=6,b=2,c; c=f(a)/f(b); printf("%d",c); } 运行结果:c=a*a/b*b=((a*a)/b)*b=36

#define f(x) x*x 换到程序里变成main(){ int a = 6, b = 2, c; c= a * a / b * b; // c = 6 * 6 / 2 * 2; 这个算术值 为36不用解释吧 printf("%d\n", c );}

完整程序是:#include "stdio.h"#define f(x) x*xint main(){ int a=6,b=2,c; c=f(a)/f(b); printf("%d\n",c); return 0;}//c=f(a)/f(b); 实际上在预编译时把f(x)直接用x*x替换了,c=a*a/b*b,c=6*6/2*2=36,是不会加括号的,要自己加括号#define f(x) ((x)*(x))

define 是宏定义.#define M 5 #define N M+M 其实就是说: 在程序里遇到M就换成5,遇到N就换成M+M.所以,k=N*N*5 就等价于 k=M+M*M+M*5,注意这是没有括号的,所以答案是55.

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com