| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 577 人关注过本帖
标题:#define JEF(x) x*x和a=++JEF(k)之后求a值?
只看楼主 加入收藏
zhengzhihui
Rank: 2
来 自:汕头大学
等 级:论坛游民
帖 子:36
专家分:57
注 册:2009-7-4
结帖率:90%
收藏
已结贴  问题点数:1 回复次数:3 
#define JEF(x) x*x和a=++JEF(k)之后求a值?
谁能解释一下:
#define JEF(x) x*x
#include<stdio.h>
void main()
{
  int a,k=7;
  a=++JEF(k);               /*这里怎么来理解?*/
  printf("%d",a);
getch();
}
结果是49.但是
#define JEF(x) x*x
#include<stdio.h>
void main()
{
  int a,k=7;
  a=++JEF(k+1);            /*这里怎么来理解?*/
  printf("%d",a);
getch();
}
结果为什么是17
搜索更多相关主题的帖子: define 
2009-08-12 20:57
zhengzhihui
Rank: 2
来 自:汕头大学
等 级:论坛游民
帖 子:36
专家分:57
注 册:2009-7-4
收藏
得分:0 
我觉得应该是:a=++7*7,a应该为56;第二个a=++7+1*7+1,a应该为16。可结果竟然是49和17???
2009-08-12 21:01
Sean仔
Rank: 2
等 级:论坛游民
帖 子:17
专家分:79
注 册:2009-8-10
收藏
得分:0 
这个问题是很简单的,会规则就好,你就把定义的完全代进去,不要加什么别的就对了
第一个:a=++JEF(k); =》#define JEF(x) x*x =》a=++x*x(最终形态,完全代,不加防腐剂)        ++x的优先级高,先把x=++x=8,再进行*运算a=8*8=64;奇怪= =||我也要求救了!
第二个:a=++JEF(k+1); =》#define JEF(x) x*x =》a=++x+1*x+1                    先运行x=++x=8,a=8+1*8(运行++X这个x也变成8哦)+1=17  这个倒是没错- -|||
2009-08-12 21:56
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
收藏
得分:0 
头一次看到,^_^,学习一下,我起先看到这结果的时候也很诧异,原来如此。
2009-08-12 22:30
快速回复:#define JEF(x) x*x和a=++JEF(k)之后求a值?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017261 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved