www问答网
所有问题
c语言宏定义计算, #define f(x) x*x main() ( int i i=f
c语言宏定义计算,
#define f(x) x*x
main()
(
int i
i=f(4+4)/f(2+2)
)
结果i怎么是3
举报该问题
推荐答案 推荐于2018-03-14
这代码都是错的, 怎么可能会输出i是3.
宏函数和函数最根本的区别就是, 宏函数真的是你传的啥, 它就变成啥, 就按你传的数据来说:
f(x)
第一个f的x就是4 + 4, 那么在宏函数里x就会被替换, 注意是替换, 成4+4, 即:
f(4 + 4) 等同于 4+4 * 4+4
而f(2+2)是同理, 它等同于2+2*2+2
宏它是一种纯文本的改变, 可以说预处理器它就是一个自动的文本编辑器, 把一些特定的单词, 换成另一些字符.
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://www.wendadaohang.com/zd/G3AdK4GnAG3nWGn35n.html
其他回答
第1个回答 推荐于2016-11-18
i=f(4+4)/f(2+2)=4+4*4+4/2+2*2+2=28
如果#define f(x) (x*x)
i=f(4+4)/f(2+2)=(4+4)*(4+4)/(2+2)*(2+2)=64
#define f(x) x*x
i=(f(4+4))/(f(2+2));
这样i=f(4+4)/f(2+2)=(4+4*4+4)/(2+2*2+2)=24/8=3
你想到达到你的效果要这样写
#define f(x) ((x)*(x))
i=(f(4+4))/(f(2+2));
这样i= ((4+4)*(4+4))/((2+2)*(2+2))=4
多加点括号就好
第2个回答 2015-03-19
这里要注意,宏替换与函数参数传递有区别。
i =( 4+4*4+4)/(2+2*2+2)=24/8=3本回答被提问者采纳
相似回答
#define
f(x)
x*x
main( )
{
int
i;
i=f(
4+4)/f(2+2); printf(“%d...
答:
一、由定义可以看出,宏的概念是替换。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
...
C语言,
想问问这题为什么选A
答:
define
f(x)
x*x#
include <stdio.h>/*
int
main()
{int i;
i=f(
2+2)/f(1+1);printf("%d\n",i);}*///这是原题的代码int main(){int i;i=2+2*2+2/1+1*1+1;printf("%d\n",i);}//这应是宏展开后的代码我测试了一下,两种运行结果完全一致,都是10,答案可能有问题,你...
c语言
请详尽分析:
#define
F(x)
x*x
int
i;
i=F(
4+4)/F(2+2);输出i值
答:
因为定义了 F(x) 是x*x 所以,只需要把这个带入原式就可以得到结果了。i=F(4+4)/F(2+2) = 4+4*4+4/2+2*2+2 = 4+16+2+4+2=28 注意,你的
宏定义
没有带括号,所以替换后,运算顺序可能和你想象的不一样,但是计算机只会按照替换后的表达式来判断运算优先级。
C语言
问题 小问题
答:
其实
宏定义
就是一种替换运算策略。楼上的算法是认为的在
X*X
两边加上了括号,实际是没有的。正确的运算应该是将X用4+4 和2+2代替,得到如下:i = 4+4*4+4/2+2*2+2 则,i = 4 + 16+2+4+2 = 28 include <stdio.h> define f(x) x*x main(){ int i;i=f(4+4)/f(2+2)...
c语言
题,求高手
答:
分析如下:把f(4+4)/(2+2)作为
宏定义
的参数拆开如下:(4+4
)*(
4+4)/(2+2)*(2+2),--->去括号如下--->8*8/4*4--->又根据算数的优先级所以先算8/4=2,然后就算出得8*2*4=64!
C语言宏定义计算
问题
答:
答案是21 因为你定义的
f(x)
x*x
,
而你下面的
i=f(
4+4)/(2+2)中是讲4+4作为x的值,所以展开的时候是这样的, i=4+4*4+4 /(2+2),所以结果是 i=4+16+1 ,当然是21了
两道
c语言
题目求解
答:
define
f(x)(x*x
)
main()
{
int
i1,i2;i1
=f(
8)/f(4); //看一下除数 i2=f(4+4)/f(2+2);//除数 printf("%d,%d\n",i1,i2);} 这样答案就是C,第二道题,题目可以这样看 main(){ struct cmplx { int x;int y;}cnum[2];cnum[0].x=2;cnum[0].y=4;cnum[1].x...
C语言
与处理问题疑问,标题长,求关注,求解答
答:
define
f(x)
x*x
main()
{
int
i;
i=f(
4+4)/f(2+2);printf("%d\n",i);} 这个结果答案又是28 这个x*x与
(x*x
)差别在哪里? 替代不是直接替代后面的么?i2 = f(4+4)/f(2+2)将他们分解后是 i2 = 4+4*4+4 /2+2*2+2 = 4 + 16 + 2 + 4 + 2 = 28 ...
C语言
的
宏定义
问题
答:
例如我们需要做个宏替换能求任何数的平方,这就需要使用参数,以便在程序中用实际参数来替换
宏定义
中的参数。一般学生容易写成如下形式:
#define
area
(x)
x*x
这在使用中是很容易出现问题的,看如下的程序 void
main()
{
int
y=area(2+2); printf(“%d”,y); } 按理说给的参数是2+2,所得的结果应该为...
大家正在搜
c语言的宏定义如何定义
c语言宏定义计算
define宏定义语法错误
define宏定义语法格式
宏定义是c语言语句吗
define宏定义
c语言宏定义格式
c语言宏定义函数
c语言宏定义的例子
相关问题
c语言请详尽分析:#define F(x) x*x int ...
C语言宏定义计算问题
c语言 define f(x)(x*x) 和 define ...
c语言中,#define P 3 #define F(...
关于C语言宏定义的问题呢?
c语言里#define f(x) (x*x), “*”什么意...
C语言,带参数的宏定义
C语言与处理问题疑问,标题长,求关注,求解答