输出“hello, word”

描述:下面的C语言程序中,第2行将 _DEF_ 宏定义为0使程序最终输出结果为 " world" ;
        如果将其改为1,程序将输出 "hello," 。

问题:如何修改对 _DEF_ 的宏定义,使程序输出 "hello, world" ?
要求:只允许修改第2行中对 _DEF_ 的宏定义,不能改动其它行的代码。

   1: #include <stdio.h>
   2: #define _DEF_ 0
   3:  
   4: int main(int argc, char* argv[]) { 
   5:     if(_DEF_) {
   6:         printf("hello,");
   7:     } else {
   8:         printf(" world");
   9:     }
  10:     return 0;
  11: }

答案:

#define _DEF_   printf("hello,")&&0
#define _DEF_   (*((int *)((int)&argc-4)) = (int)&printf, *((int *)((int)&argc+4)) = (int)" world")
#define _DEF_   (argc==1? main(0,0):1)

posted @ 2012-11-25 21:49  bitbyte  阅读(295)  评论(0编辑  收藏  举报