首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Quine Confusion.What真的做quine打印吗?

Quine Confusion.What真的做quine打印吗?
EN

Stack Overflow用户
提问于 2010-09-05 15:40:01
回答 6查看 553关注 0票数 1

quine打印的是程序的实际代码,也就是没有模糊的程序,还是打印模糊的程序?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-09-05 15:41:53

我不认为混淆与此有任何关系。通常,quine打印程序本身的实际源代码。

票数 8
EN

Stack Overflow用户

发布于 2010-09-05 22:44:02

假设您有一个C程序,它打印其源代码的“模糊的”或修饰过的版本。例如,假设空格或变量名有所不同。

那么该程序就不是quine,因为quine的定义是打印自身的程序,而“本身”指的是完全相同的字节序列。但该程序的输出,一旦编译,将打印与原始程序相同的东西(因为它只是一个表面上的变体),即其本身。所以输出是一个quine。

这有时会简化编写quine的过程--只需编写一个“几乎- quine”,它可能不会得到完全正确的格式,运行一次,输出就是您实际的quine。

这都是假设C中的quine。x86机器码中的quine必须输出的不是它的C源代码,而是组成.exe文件的相同的字节序列。

我不确定你所说的“实际代码”是什么意思,而不是“混淆代码”,但是要测试某个东西是否是quine,你必须决定它应该是哪种语言的quine。也许通过决定你可以回答你自己的问题-你只是想要一个C语言中的quine,还是一个与你的混淆器有关的quine?

票数 5
EN

Stack Overflow用户

发布于 2010-09-05 17:03:28

这是一个标准C语言的实际quine,可以在Wikipedia上找到

代码语言:javascript
复制
main() { char *s="main() { char *s=%c%s%c; printf(s,34,s,34); }"; printf(s,34,s,34); }

你会注意到它的结构是相对简单的。它使用包含程序文本的字符串常量作为格式化字符串和要由printf()格式化的值之一。

在编译和运行时,它只打印这一行代码。

在wiki文章中有各种语言的quines的例子,包括一些C语言的例子。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3645343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档