黑马程序员技术交流社区

标题: 谁帮看看这个代码对错?结果是啥?说说过程 [打印本页]

作者: x_starry    时间: 2016-1-17 20:49
标题: 谁帮看看这个代码对错?结果是啥?说说过程
#define pingfang(a) (a*a)

#include <stdio.h>

   int main()

{
int c = pingfang(5+5);

   printf("c is %d\n", c);

return 0;

}

作者: a416182173    时间: 2016-1-19 17:00
把5+5放到pingfang里面去之后就变成了(5+5*5+5),乘法先算,变成了35,所以输出出来之后就是 c is 35.
作者: guyuexing    时间: 2016-1-19 17:43
嗯,有道理
作者: 石门一梦    时间: 2016-1-20 10:41
宏定义作用只是在编译之前把前面的值替换为后面的值,并不会参与运算,可以把宏定义的每个变量都用括号包起来,
即#define pingfang (a) ((a)*(a))
作者: x_starry    时间: 2016-3-9 13:46
a416182173 发表于 2016-1-19 17:00
把5+5放到pingfang里面去之后就变成了(5+5*5+5),乘法先算,变成了35,所以输出出来之后就是 c is 35. ...

了解了。多谢!!!
作者: x_starry    时间: 2016-3-9 13:48
a416182173 发表于 2016-1-19 17:00
把5+5放到pingfang里面去之后就变成了(5+5*5+5),乘法先算,变成了35,所以输出出来之后就是 c is 35. ...

了解了。多谢!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2