朋友给我看了一个他写的Hello world,大家可以看看,然后想一想,为什么可以有正确的输出?
1 2 3 4 5 6 7 8 9 | #include <stdio.h> int echo(void){ printf("Hello, world!\n"); exit(0); } void main(void){ int arr[1]; arr[2]=echo; } |
朋友给我看了一个他写的Hello world,大家可以看看,然后想一想,为什么可以有正确的输出?
1 2 3 4 5 6 7 8 9 | #include <stdio.h> int echo(void){ printf("Hello, world!\n"); exit(0); } void main(void){ int arr[1]; arr[2]=echo; } |
没有输出啊
今天拿32位编译器又试了一下,确实没有效果,看来只有16位编译器下才能实现这个效果(我以前用TC2.0就可以)。原理也很简单,利用了C对于数组越界的处理。