描述:下面的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)