黑马程序员技术交流社区

标题: C语言变量传参的问题 [打印本页]

作者: 9385047    时间: 2014-3-17 16:23
标题: C语言变量传参的问题
本帖最后由 9385047 于 2014-3-17 16:58 编辑

今天遇到一个很让我诧异的问题,现在想知道为什么。我以前是学java的,javascript也写过,C现在刚入门。嘿嘿,废话少说,请看题,我第一次答错了,哈哈。请问最终输出的结果是什么?如果知道答案,请麻烦告诉我一下为什么。


  1. #define pingfang(a) (a*a) //定义一个函数,返回变量相乘的积
  2. #include "stdio.h"
  3. int main()
  4. {
  5.     //定义一个变量,接收函数返回的结果
  6.     int c = pingfang(5+5);
  7.     //输出结果
  8.     printf("c is %d\n", c);
  9.     return 0;
  10. }
复制代码




作者: cnchenys    时间: 2014-3-17 16:26
本帖最后由 cnchenys 于 2014-3-17 16:53 编辑

5+5*5+5=35.define方法是纯文本替换,所以就是这个结果,想输出想要的结果,5+5要写成(5+5)

作者: 9385047    时间: 2014-3-17 16:27
cnchenys 发表于 2014-3-17 16:26
5+5*5+5=35

为什么?不应该是10*10=100吗?
作者: cnchenys    时间: 2014-3-17 16:29
本帖最后由 cnchenys 于 2014-3-17 16:53 编辑
9385047 发表于 2014-3-17 16:27
为什么?不应该是10*10=100吗?

那你要在5+5变成(5+5)
作者: 9385047    时间: 2014-3-17 16:49
cnchenys 发表于 2014-3-17 16:26
5+5*5+5=35.define方法是纯文本替换,所以就是这个结果,想输出想要的结果,5要写成(5+5)
...

嗯,这里主要考察的就是C语言中#define的用法,学习了,谢啦,终于搞明白啦,哈哈




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