gpt4 book ai didi

perl - perl quine 的解释

转载 作者:行者123 更新时间:2023-12-01 09:28:20 27 4
gpt4 key购买 nike

我最近发现了这个 quine

$a='$a=%c%s%c;printf($a,39,$a,39,10);%c';printf($a,39,$a,39,10);

我就是想不通。我在 google/SO 上找不到这个特定的解释,所以我希望有人可以向我解释这件事是如何工作的 :-)

最佳答案

这段代码由两行组成。

变量赋值:

$a='$a=%c%s%c;printf($a,39,$a,39,10);%c';

还有一个 printf :

printf($a,39,$a,39,10)

首先让我们了解一些关于printf 的知识。如果您查看 sprintf documentation你会看到 printf('%c',39) 将打印第 39 个字符 ',而 printf('%c',10) 是换行符 \n。要记住的另一件事是 printf 采用参数列表,这意味着 printf('%s%s','foo','bar') 将打印foobar.

所以现在应该清楚 printf($a,39,$a,39,10) 采用 $a 的格式并进行以下 4 次转换(等于 $a 字符串中 % 符号的个数)

  • 将第二个参数 39 用于第一次出现 %c(检查 $a 变量),
  • 然后它将字符串 $a 用于 %s
  • printf 的第 4 个参数 39 用于下一个 %c
  • 最后是最后一个 %c
  • 10

这会导致它自己的源代码的副本。

关于perl - perl quine 的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19290540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com