| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 635 人关注过本帖
标题:解决一道题
只看楼主 加入收藏
xzx1002002
Rank: 2
等 级:论坛游民
帖 子:68
专家分:27
注 册:2006-3-7
收藏
 问题点数:0 回复次数:7 
解决一道题
#define abc(x) #x #x #x

int x=100;


abc(x)=?
2006-03-08 19:45
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 
#x #x #x//不晓得你这个#x是代表什么意思,要是随便代表一个表达式的话可以的到下面的结果:
abc(x)= #100 #100 #100

自强不息:)
2006-03-08 20:20
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
收藏
得分:0 
#在这里是作为#号操作符,
#define abc(x) #x 这个宏定义的意思是:将x转换成字符串。

#define abc(x) #x #x #x
int x = 100;
则abc(x)的值就是:xxx

例1:
#define out(x) (cout << #x)
int main()
{
out(abcde f g);//屏幕将输出 abcde f g
return 0;
}

例2:
#define tostr(x) #x
int main()
{
char *str = tostr(abcde f g);
cout << str << endl;//屏幕将输出 abcde f g
return 0;
}

谷底深深行 ,峰顶漫漫步......@_@
2006-03-09 09:41
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 

受教了

自强不息:)
2006-03-09 11:53
xzx1002002
Rank: 2
等 级:论坛游民
帖 子:68
专家分:27
注 册:2006-3-7
收藏
得分:0 

厉害,我明白了。
但还有一点,
int x=100;
这个是不是要代入?
那结果是不是100100100呢?

请指教下,谢了。

2006-03-09 16:36
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
收藏
得分:0 
不是这样的,如下面的例2, tostr()宏直接就将其参数转化为字符串了。
如:
int a = 0;
cout << tostr(a) << endl;
说明:
1。屏幕将输出a,与int a = 0;这一句没有关系.所以并非输出0。
2。cout << tostr(a) << endl;相当于cout << "a" << endl;

例2:
#define tostr(x) #x
int main()
{
char *str = tostr(abcde f g);
cout << str << endl;//屏幕将输出 abcde f g
return 0;
}


谷底深深行 ,峰顶漫漫步......@_@
2006-03-09 17:11
giant
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-11
收藏
得分:0 
呵呵,有收获!

2006-03-09 17:52
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
收藏
得分:0 
我都定义宏
#define PRT(var) cout<<#var<<" : "<<var
用来调试程序的,很方便

for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-03-09 20:20
快速回复:解决一道题
数据加载中...
 
   



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

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