黑马程序员技术交流社区
标题:
这个有点意思
[打印本页]
作者:
to_love
时间:
2015-8-21 21:54
标题:
这个有点意思
打眼一看这结果就是100,可是输出才知道是35,WHY?
#define pingfang(a) (a*a)
#include "stdio.h"
int main()
{
int c = pingfang(5+5);
printf("c is %d\n", c);
return 0;
}
作者:
毛强
时间:
2015-8-21 21:57
a = a+a*a+a = 5+5*5+5 = 35
作者:
Jo_
时间:
2015-8-21 23:29
宏定义只是简单替换。所以是5+5*5+5=35
作者:
woxingwosu
时间:
2015-8-21 23:32
就相当于你传过来的是(5+5*5+5)
作者:
第一梦
时间:
2015-8-21 23:56
楼上都是正解!!要打印出100,需要这样写:#define pingfang(a) ((a)*(a))
作者:
smilejoke
时间:
2015-8-22 08:56
要用机器的方式来思维,宏定义只是简单地替换,若要想输出100则需要做如下改进#define pingfang(a) ((a)*(a))
作者:
小笼包
时间:
2015-8-22 15:30
我都快忘了这个定义了,谢谢提醒
作者:
庞佳星
时间:
2015-8-22 17:49
5+5*5+5=35
作者:
张中付
时间:
2015-8-25 09:01
第一梦 发表于 2015-8-21 23:56
楼上都是正解!!要打印出100,需要这样写:#define pingfang(a) ((a)*(a))
不错,彻悟
作者:
没有信号
时间:
2015-8-25 09:07
不大懂
作者:
你是我的小苹果
时间:
2015-8-25 11:05
细节问题,这就叫代码规范。
作者:
iphone
时间:
2015-8-25 14:29
宏定义 不建议这样写
作者:
企业部-阿狗老师
时间:
2015-8-25 21:11
我都快忘了这个定义了,谢谢提醒
作者:
翟宇浩
时间:
2015-8-27 22:00
因为你自认为加上了括号,但是是不加括号的,先算*,后算+
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2