#define f(x) x*x main( ) { int i; i=f(4+4)/f(2+2); printf(“%d”,i); }

我是高中生C语言自学了一点为什么#definef(x)x*xvoidmain(){inti;i=f(4+4)/f(2+2);printf("%d\n",i);}结果是4+... 我是高中生 C语言自学了一点

为什么
#define f(x) x*x
void main()
{
int i;
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
结果是4+4*4+4/2+2*2+2=28
而不是{(4+4)*(4+4)}/{(2+2)*(2+2)}=5.333

i=f(4+4)/f(2+2)这一项中的括号不起作用吗?

还有 解释一下这些符号 printf("%d\n",i);
打错了。。。。。为什么不是4?。。。
不会是5.333.。。我错了
展开
 我来答
百度网友60649da
2011-06-29 · TA获得超过139个赞
知道答主
回答量:55
采纳率:0%
帮助的人:20.2万
展开全部
【专业回答,质量保证】
【基础知识】看来基础薄弱,那么需要先给你解释一下什么是宏定义
宏定义又称为宏代换、宏替换,简称“宏”。
掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。
(可以看这个链接http://baike.baidu.com/view/2076445.html?wtp=tt)
【问题解答】
一、由定义可以看出,宏的概念是替换。
1、那么也就是f(4+4)代表着x是4+4,x*x替换一下后就变成了4+4*4+4
2、同理f(2+2);替换为了2+2*2+2
3、最后f(4+4)/f(2+2);就是4+4*4+4/2+2*2+2
并且由于其中的除号"/"优先级比+号高,所以得出结果是28
二、printf("%d\n",i);
prtinf是产生格式化输出的函数,%d是以十进制整数的形式输出,i是一个整型变量。
\n是换行符号。
整个语句的意思就是将i代表的整形数打印到屏幕。
关于printf可以参考http://baike.baidu.com/view/410546.htm
【C语言学习的地方推荐】
推荐看一下谭浩强的C语言,这个是基础。这个看差不多了之后
在看 高质量C/C++程序指南 这本书很不错,强烈推荐。
更多追问追答
追问
能给找个网上学C语言的地方么?书也行网站也行。多推荐几个
我会加分 谢谢 我很感兴趣
追答
已经推荐了,论坛网站就无所谓了,关键在于自学,刚学的时候按着书上的内容向电脑上挨个敲兵理解每行代码的含义。
如果一定要推荐网站没,那么就是www.csdn.net 中国最大的程序员论坛。
松甜恬0Je4ba
2011-06-29 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3392万
展开全部
这里f()是对应f(x)中的括号的,并不是给4+4套上括号的。
如果#define f(x) (x)*(x)就是你想的那种结果。

printf是一个输出语句,%d是以十进制整数的形式输出,i是一个整型变量。
这句的作用就是 将i代表的整型数打印到屏幕上。
追问
能给找个网上学C语言的地方么?书也行网站也行。多推荐几个
我会加分 谢谢 我很感兴趣
追答
我建议你看下  谭浩强的《c语言基础》的书,该书虽然里面有些问题,但是作为c语言的入门书还是不错的。
现在,你刚开始学,不要太早看网上的一些论坛的东西,那些都是探究型的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
L_o_o_n_i_e
2011-06-29 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5164万
展开全部
#define f(x) x*x 是字符串替代。
把程序里 所有的 f(x) 用 x*x 替代。x 用你填的字符串替代。
为防止 多意 性,写成 #define f(x) ((x)*(x)) 就万无一失。
追问
能给找个网上学C语言的地方么?书也行网站也行。多推荐几个
我会加分 谢谢 我很感兴趣
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
彡沧爱627
2011-06-30 · TA获得超过263个赞
知道答主
回答量:482
采纳率:0%
帮助的人:323万
展开全部
f(4+4)/f(2+2)//因为f(x)是定义为x*x,其中 4+4 就表示x了,2+2也表示x
展开就是4+4*4+4/2+2*2+2
就f( )括号里的内容去替换所有 有x的地方
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2017-11-17 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6527万
展开全部
你的()只是表示宏f是带参数的,并没有把宏变量括起来。改成#define f(x) ((x)*(x))就妥了……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式