屠龙之技(一个有趣的签名档)

看到有个人的签名档是:

main(_) { for(--_;putchar(_++["J!Mpwf!Zpv\"\013\1"]-1);); }

这段代码能打印出 I Love You!。呵呵,分析了一下,_ 是 main() 的第一个参数,就是通常那个 argc,至于 i[p] 这个形式等价于 p[i],都是一样按指针加偏移计算的,以前在某个地方见过的。引号里面那段东西每个减去 1 就是 "I Love You!\n" 这个字符串了。写得规范一点就容易懂了:

#include <stdio.h>
int main(int argc, char **argv)
{
    char *s = "J!Mpwf!Zpv\"\013\1";
    for (--argc; putchar(s[argc++] - 1););
    return 0;
}

0 Comments so far

  1. There are currently no comments.
Leave a Comment?


« 微软题,整数列的最大公约数  —  微软的电面题 »

Tags

Blogroll

Fairy World | STUPiD | 阅微草堂 | ShelleX | 流浪五天