输出“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)

转载于:https://www.cnblogs.com/bitbyte/archive/2012/11/25/2787975.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值