A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 9385047 中级黑马   /  2014-3-17 16:23  /  1020 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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. }
复制代码



4 个回复

倒序浏览
本帖最后由 cnchenys 于 2014-3-17 16:53 编辑

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

为什么?不应该是10*10=100吗?
回复 使用道具 举报
本帖最后由 cnchenys 于 2014-3-17 16:53 编辑
9385047 发表于 2014-3-17 16:27
为什么?不应该是10*10=100吗?

那你要在5+5变成(5+5)
回复 使用道具 举报
cnchenys 发表于 2014-3-17 16:26
5+5*5+5=35.define方法是纯文本替换,所以就是这个结果,想输出想要的结果,5要写成(5+5)
...

嗯,这里主要考察的就是C语言中#define的用法,学习了,谢啦,终于搞明白啦,哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马