我只是在浏览面试中经常被问到的某些代码。我提出了一些问题,是否有人可以帮助我解决这个问题?
我现在对此完全困惑
#include <stdio.h>
#include <conio.h>
#define square(x) x*x
main()
{
int i, j;
i = 4/square(4);
j = 64/square(4);
printf("\n %d", i);
printf("\n %d", j);
printf("\n %d", square(4));
getch();
}
输出是:
4
64
16
我想知道为什么square(4)
我划分时返回1?我的意思是,我怎样才能获得价值4 and 64当我划分它时,但是当直接使用时我得到16!!?
square
是在括号下面的:它在文本上扩展,所以
#define square(x) x*x
...
i=4/square(4);
means
i=4/4*4;
哪些组为(4/4) * 4
。要修复,请添加括号:
#define square(x) ((x)*(x))
仍然非常不确定#define
正如它评估的那样x
两次,所以square(somefun())
调用该函数两次并且执行not因此,当然必须计算平方,而是计算两次连续调用的乘积;-)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)