首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个程序的两个输出结果为啥不一样啊

2012-08-11 
这个程序的两个输出结果为什么不一样啊?C/C++ code#include stdio.h#define f(a,b) a##b#define g(a)#a#

这个程序的两个输出结果为什么不一样啊?

C/C++ code
#include <stdio.h>#define f(a,b) a##b#define g(a)   #a#define h(a) g(a)int main(){    printf("%s\n",h(f(1,2)));    printf("%s\n",g(f(1,2)));    return 0;}


[解决办法]
C/C++ code
int main(){    printf("%s\n","12");    printf("%s\n","f(1,2)");    return 0;}
[解决办法]
h(f(1,2))=>g(a##b)=>"12"
g(f(1,2))=>"f(1,2)"
[解决办法]
楼上都是正解
[解决办法]
C/C++ code
    printf("%s\n",h(f(1,2)));004113AE  mov         esi,esp  004113B0  push        offset string [color=#FF0000]"12"[/color] (415750h)  004113B5  push        offset string "%s\n" (41574Ch)  004113BA  call        dword ptr [__imp__printf (4182B4h)]  004113C0  add         esp,8  004113C3  cmp         esi,esp  004113C5  call        @ILT+310(__RTC_CheckEsp) (41113Bh)      printf("%s\n",g(f(1,2)));004113CA  mov         esi,esp  004113CC  push        offset string [color=#FF0000]"f(1,2)"[/color] (415744h)  004113D1  push        offset string "%s\n" (41574Ch)  004113D6  call        dword ptr [__imp__printf (4182B4h)]  004113DC  add         esp,8  004113DF  cmp         esi,esp  004113E1  call        @ILT+310(__RTC_CheckEsp) (41113Bh)
[解决办法]
探讨

引用:

h(f(1,2))=>g(a##b)=>"12"
g(f(1,2))=>"f(1,2)"


关键 为什么啊

[解决办法]
诶,看不懂,那位好人帮忙解释下,不胜感激!
[解决办法]
C/C++ code
h(f(1,2))->#1##2->"12"g(f(1,2))->#f(1,2)->"f(1,2)" 

热点排行