察看ASCII码表发现,“J!Mpwf!Zpv\1”其实就是“I Love You\0”的ASCII值加1。所以将“J!Mpwf!Zpv\1”的ASCII值减1,就会输出“I Love You\0”,“\0”是结束符,所以不显示。["J!Mpwf!Zpv\1"]-1应该就是把它的ASCII值减1。前面的--_是将值为1的变量变成0,而后面的_++是将其加1,然后后边跟一个字符型数组,每次输出一个字符,直到\0为止。例如,把变量初始化为0或2都会有问题。
其正确行使为:
#include<stdio.h>
void main()
{
int a=1;
for(a--;putchar(a++["J!Mpwf!Zpv\1"]-1););
}
本程序已在Visual C++ 6中编译通过。