经典C语言乱码 谁知道这个打印撒子??

来源:百度知道 编辑:UC知道 时间:2024/06/19 04:28:17
main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}

因为:数组str[n] <==>(n)[str]
所以:(unix)["have"] + "fun" - 0x60 <==> "have"[1]+"fun"-0x60
即: 'a'+"fun"-0x60
因为:'a' = 0x61
所以:变为“fun”+1
因为:“fun”是个char型指针
所以:指向“un”
因为:\021是一个八进制数,代表第一个字符
所以:&1["\021unix\012\0"]<==>"unix\012\0"
因为:012是八进制的换行,\0是字符串结束
所以:最终结果是
unix